题目描述:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

分析:

如果从前往后替换空格,那么每遇到一个空格就需要将还没遍历到的字符后移,总的移动步数将会很多。

所以我们考虑先求出替换空格之后的字符串的长度,再从后往前遍历进行替换,将会大大减少替换的次数,也不会覆盖还没遍历的字符。

代码:

 class Solution {
public:
void replaceSpace(char *str, int length) {
int oldLength = strlen(str); // 没替换前的字符串长度
int newLength = oldLength;
for(int i = ; i < oldLength; i++) { // 求出替换空格后的字符串长度
if(str[i] == ' ')
newLength += ;
}
if(newLength > length) return; // 新长度超过限制的最长长度,则无法替换
while(oldLength >= && newLength > oldLength) { // 从后往前替换空格
if(str[oldLength] == ' ') {
str[newLength--] = '';
str[newLength--] = '';
str[newLength--] = '%';
oldLength--;
} else {
str[newLength--] = str[oldLength--];
}
}
}
};

最新文章

  1. fir.im Weekly - 做一款 App 需要考虑什么
  2. C#中(int)a和Convert.ToInt32(a)有什么区别
  3. 【新产品发布】EVC8003 磁耦隔离型USB转全功能RS-232
  4. LeetCode_Letter Combinations of a Phone Number
  5. ANDROID定义自己的观点——模仿瀑布布局(源代码)
  6. MyBatis(二):Select语句传递参数的集中方案
  7. 腾讯云服务器哪个地区节点好?来ping一下速度就知道了
  8. 第二个项目:WC
  9. nginx 配置反向代理
  10. git变慢的原因
  11. [poj P2411] Mondriaan&#39;s Dream
  12. 基于SaaS的企业数据隐私保护平台
  13. ROSETTA使用技巧随笔--蛋白蛋白对接
  14. neutron openvswitch + vxlan 通讯
  15. 使用c++实现一个FTP客户端(一)
  16. hadoop学习day3 mapreduce笔记
  17. [性能测试]:ISO8583报文解析实例
  18. LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装
  19. Winter-1-D Max Sum 解题报告及测试数据
  20. flex and bison学习笔记01

热门文章

  1. atitit.React &#160;&#160;优缺点 相比angular&#160;react是最靠谱的web ui组件化方案了
  2. Atitit.执行cmd 命令行 php
  3. 浅谈 Objective-C 下对象的初始化
  4. 491. Palindrome Number【easy】
  5. Qt pro文件语法
  6. JVM Specification 9th Edition (1) Cover
  7. linux 文件夹的颜色代表什么意思
  8. leetcode || 64、Minimum Path Sum
  9. WEB APP 开发标签
  10. ubuntu14.04安装pycurl