1.需求及分析

实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“we are happy”,则输出“we%20are%20happy”。

在网络编程中,如果URL参数中含有特殊字符,如空格、‘#’等,可能导致服务器端无法获得正确的参数值。此时需要考虑将特殊符号转换为服务器可以识别的字符。转换的规则是在‘%’后面跟上ASCII码的两位16进制的表示。比如空格的ASCII码是32,即十六进制的0x20,因此空格就换被替换成‘%20’。

2.O(n)的解决方案

  • 遍历字符串,统计字符串的长度,空格的数量;
  • 初始化替换后字符串的长度(=原始字符串长度+空格的数量*2);
  • 初始化两个指针,指针p1指向原始字符串末端;指针p2指向新字符串末端;
  • 终止条件:p1 p2同时指向字符串首地址。
#include<iostream>
#include<string>
using namespace std;void StringReplace(char str[])
{if (str == NULL)return;char string[20];strcpy(string, str);int originalLength = 0; int numberOfBlank = 0;for (int i = 0; string[i] != '\0'; i++){originalLength++;if (string[i] == ' ')numberOfBlank++;}int newLength = originalLength + 2 * numberOfBlank;while (originalLength >= 0 && newLength >= 0){if (string[originalLength] == ' '){string[newLength--] = '0';string[newLength--] = '2';string[newLength--] = '%';}elsestring[newLength--] = string[originalLength];originalLength--;}cout << string << endl;}int main()
{char str[13] = { 'w', 'e', ' ', 'a', 'r', 'e', ' ', 'h', 'a', 'p', 'p', 'y', '\0' };StringReplace(str);return 0;
}

空格替换_O(n)方法相关推荐

  1. 浅谈C语言将字符串中的空格替换成%20的几种方法(附图超级详细解答)

    文章目录 题目分析 暴力位移法 巧用数组法 高效倒放法 题目分析 将字符串中的空格替换为%20.样例: "abc defgx yz" 转换成 "abc%20defgx%2 ...

  2. Java 替换字符串中空格的三种方法

    1.方法分类 str.trim(); //去掉首尾空格 str.replace(" ",""); //去除所有空格,包括首尾.中间 str.replaceAll ...

  3. 学习excel的使用技巧一空格替换为0

    学习excel的使用技巧一空格替换为0 问题1  把excel表格中的空格  填充为0 方法1 选中CDE列    CRTL+F 查找空 替换为0 方法2 选中CDE列 CRTL+G 打开定位  点击 ...

  4. 如何在C#中用单个空格替换多个空格?

    如何用C#中的一个空格替换字符串中的多个空格? 例: 1 2 3 4 5 将会: 1 2 3 4 5 #1楼 使用LINQ的另一种方法: var list = str.Split(' ').Where ...

  5. 正则表达式用单个空格替换多个空格

    给定一个像这样的字符串: "The dog has a long tail, and it is RED!" 什么样的jQuery或JavaScript魔术可以用来将空间限制为最多 ...

  6. php首尾空格,php去除头尾空格的2种方法_PHP教程

    php去除头尾空格的2种方法 这篇文章主要介绍了php去除头尾空格的2种方法,本文给出了用preg_replace替换.trim函数两种方法并给出了示例,需要的朋友可以参考下 看似很简单的问题,其实还 ...

  7. 请实现一个函数,将字符串中的空格替换成“%20”

    一.传统做法 从开始位置向后遍历,如果发现空格,则挪动后面的字符串腾出 2 个字符的空间,写入"%20",直至到字符串末尾. (灰色部分是每次要挪动的字符) 这种方法非常直观,但是 ...

  8. String中删除空格的7种方法!

    字符串,是Java中最常用的一个数据类型了.我们在日常开发时候会经常使用字符串做很多的操作.比如字符串的拼接.截断.替换等. 本文我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中的空格. ...

  9. python把空格替换成字符串,用空格替换字符串中的字符

    我正在编写一个简单的Python脚本,它可以检索任何twitter用户(在本例中是BBC)的最新tweet,并使用Mac上集成的文本到语音系统来读取特定tweet的内容.在 一切都在正常运转,但有些事 ...

最新文章

  1. Keepalived — VRRP 的 Linux 软件实现
  2. mqtt linux 编译,MQTT客户端代码X64位Ubuntu环境编译+测试实践小结
  3. C语言结构体占用内存总结
  4. 使用青云主机的GPU主机教程(不完整版)
  5. 基于决策树的保险案列
  6. 计算机毕业设计java+ssm的在线投票管理系统(源码+系统+mysql数据库+Lw文档)
  7. 记录一次redmibook pro15声卡驱动相关问题
  8. 互金舆情精选-2019/1/31
  9. VC中GetLastError() 错误代码的含义
  10. MATLAB clc clear
  11. 如果你现在没有目标,对未来很迷茫、、打扰下 耽误几秒钟看看这个故事 故事很短 但是你一定会有所收获。...
  12. ip关联是什么意思,亚马逊如何防止ip关联(ip关联过多是什么意思)
  13. 【Tip】那些“想当然”的记录
  14. LCD RGB 控制技术 时钟篇(上)
  15. [原创]TenJi Game-线下玩法技巧
  16. 事件相机模拟器rpg-esim环境搭建
  17. 计算机usb共享网络泄密,信息泄密的三种渠道
  18. linux扩展模式触摸屏,在双屏模式下触摸屏校准的问题
  19. WPF编程,使用系统自带的Wingdings字体。
  20. 在注册表中删除程序的方法

热门文章

  1. Delphi Qjson
  2. Citrix虚拟化技术之一XenServer6.2安装
  3. nyoj-222 整数中的1
  4. NYOJ 837 Wythoff Game
  5. Selenium 自动化测试之道--Maven-TestNG
  6. JAVA中JPasswordField实现密码的确认
  7. PAT1097:Deduplication on a Linked List
  8. Hadoop wordcount
  9. nginx+lua (一)
  10. CodeForces - 434D Nanami's Power Plant