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. 查看无线网卡是否支持监听模式
  2. 字符串匹配的KMP算法和C语言代码,不需要思考就能理解
  3. 阿里云1C2G虚拟机【99/年】羊毛党集合啦!
  4. kubernetes性能测试实践
  5. JavaWeb:CSS层叠样式表
  6. UA OPTI570 量子力学21 Atom Trapping
  7. CV之路 —— Opencv学习
  8. python查询mysql表名字动态日期_Python之路day11作业-MySQL表查询
  9. 计算机考研分数2019,2019考研分数线和国家线有什么关系
  10. mysql or全表_mysql or条件可以使用索引而避免全表
  11. 信息学奥赛一本通 1002:输出第二个整数 | OpenJudge NOI 1.1 02
  12. @Profile注解与@Conditional注解
  13. MFC Windows 程序设计(一)-程序员的解放
  14. java postgresql jdbc驱动 下载,PostgreSQL的JDBC驱动和URL
  15. sql填充空值_如何在SQL中使用先前的非空值填充稀疏数据
  16. JavaSwing实现简单连连看小游戏
  17. stm32 JTAG做普通io口(来自www.ourdev.com)
  18. odoo14 Botton按钮标签属性详解及按钮图标使用
  19. 网络计算机输入网络凭据,Win10访问局域网电脑提示需要输入网络凭证怎么办?
  20. 在Linux上使用7z的最高压缩比来压缩文件

热门文章

  1. 手机/移动前端开发需要注意的20个要点
  2. 如何设置Windows server 2008 R2登陆密码?
  3. dedecms调用当前栏目的子栏目怎么操作
  4. adb shell 命令详解,android, adb logcat
  5. 以Drools5.5为例说明“规则引擎在业务系统中应用”---起始篇
  6. rocks自建存储流程
  7. 分享:RethinkDB 1.3 发布,分布式 JSON 数据库
  8. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)
  9. hdu 1532(最大流)
  10. SQLServer2008 Transact_SQL语言基础实例