C++
在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改。
class Solution {
public:
string replaceSpace(string s) {
int count = 0, len = s.size();
for(auto i:s) if(i == ' ') count++; //统计空格数量
s.resize(len + 2*count); // 修改 s 长度,后面字符串是空的
for(int i = len - 1, j = s.size()-1;i>=0;i--,j-- ){ // 倒序遍历修改,因为后面是空的
if(s[i]!=' ') s[j] = s[i];
else{
s[j] = '0';
s[j-1] = '2';
s[j-2] = '%';
j -= 2;
}
}
return s;
}
};
Python
**
在 Python 和 Java 等语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。
**
python列表转字符串,join函数
class Solution:
def replaceSpace(self, s: str) -> str:
ans = [] #列表
for c in s:
if c == ' ': ans.append("%20")
else: ans.append(c)
return "".join(ans) #python列表转字符串