本文共 1141 字,大约阅读时间需要 3 分钟。
题目描述
方法一:额外申请空间
思路为了解决空格替换为%20的问题,可以定义一个额外的字符串str。然后遍历原字符串s,当遇到空格时,在str中添加"%20",否则直接将字符添加到str中。
代码
class Solution {public: string replaceSpace(string s) { string str; for (int i = 0; i < s.length(); ++i) { if (s[i] == ' ') { str += "%20"; } else { str += s[i]; } } return str; }}; 方法二:原地替换
思路首先统计字符串s中空格的个数。然后在原字符串s上申请额外的空间,空间大小为空格数乘以2。接下来用快慢指针的方法,从字符串末尾向前遍历。当遇到空格时,将该位置及其前两位替换为"%", "2", "0";否则,将字符直接复制到相应位置。
代码
class Solution {public: string replaceSpace(string s) { int cnt = 0; for (int i = 0; i < s.length(); ++i) { if (s[i] == ' ') { ++cnt; } } s.resize(s.size() + 2 * cnt); int i = s.length() - 1, j = s.size() - 1; while (i < j) { if (s[i] == ' ') { s[j] = '0'; s[j-1] = '2'; s[j-2] = '%'; j -= 3; } else { s[j] = s[i]; --j; } --i; } return s; }}; 文章目录
文章目录
目录
方法一:额外申请空间1.1 思路1.2 代码
方法二:原地替换2.1 思路2.2 代码
转载地址:http://mrzmz.baihongyu.com/