剑指Offer——替换空格
2024-10-21 23:15:27
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%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--];
}
}
}
};
最新文章
- fir.im Weekly - 做一款 App 需要考虑什么
- C#中(int)a和Convert.ToInt32(a)有什么区别
- 【新产品发布】EVC8003 磁耦隔离型USB转全功能RS-232
- LeetCode_Letter Combinations of a Phone Number
- ANDROID定义自己的观点——模仿瀑布布局(源代码)
- MyBatis(二):Select语句传递参数的集中方案
- 腾讯云服务器哪个地区节点好?来ping一下速度就知道了
- 第二个项目:WC
- nginx 配置反向代理
- git变慢的原因
- [poj P2411] Mondriaan&#39;s Dream
- 基于SaaS的企业数据隐私保护平台
- ROSETTA使用技巧随笔--蛋白蛋白对接
- neutron openvswitch + vxlan 通讯
- 使用c++实现一个FTP客户端(一)
- hadoop学习day3 mapreduce笔记
- [性能测试]:ISO8583报文解析实例
- LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装
- Winter-1-D Max Sum 解题报告及测试数据
- flex and bison学习笔记01
热门文章
- atitit.React &#160;&#160;优缺点 相比angular&#160;react是最靠谱的web ui组件化方案了
- Atitit.执行cmd 命令行 php
- 浅谈 Objective-C 下对象的初始化
- 491. Palindrome Number【easy】
- Qt pro文件语法
- JVM Specification 9th Edition (1) Cover
- linux 文件夹的颜色代表什么意思
- leetcode || 64、Minimum Path Sum
- WEB APP 开发标签
- ubuntu14.04安装pycurl