剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
输入:s = “We are happy.”
输出:“We%20are%20happy.”
Python
方法1:
- 建立新数组
- 遍历字符串,若为非空格,将该字符‘x’存入数组;若为空格,将‘%20’存入数组
- 将数组中字符拼接
class Solution:
def replaceSpace(self, s: str) -> str:
res = []
for i in s:
if i == " ":
res.append('%20')
else:
res.append(i)
return ''.join(res)
知识点:
Python不可以原地修改字符串中内容,因此只能开辟新的空间。
C++
方法1:
- 遍历字符串查找空格个数
- 扩展字符串长度为原长度+空格数*2
- 将空格字符和后两个字符分别改为 ‘%’,‘2’,‘0’
class Solution {
public:
string replaceSpace(string s) {
int count = 0;
int l = s.size();
for(char c : s){
if (c == ' ') count++;
}
s.resize(l + count * 2);
for(int i=l-1, j=s.size()-1; i != j; i--){
if (s[i] == ' '){
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j = j-3;
}
else{
s[j] = s[i];
j = j-1;
}
}
return s;
}
};
知识点:
C++可以原地修改字符串内容吗,修改时要注意引号s[j]=‘0’,s[j]=0就是错的;
双指针从尾至首搜索