大致思路:用python直接替换,时空复杂度都为O(n)
class Solution:
def replaceSpace(self , s: str) -> str:
res = ""
#遍历字符串
for i in s:
#非空格直接复制
if i != ' ':
res += i
#空格就替换
else:
res += "%20"
return res
所以用C++双指针,对S字符串原地操作,i指针指向新S末尾,j指针指向原S末尾,匹配为空格则i左移3格,j左移1格;不为空格,则i左移1格,j左移1格。最后返回S即可。
时间复杂度O(n),空间复杂度O(1)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
string replaceSpace(string s) {
// write code here
int length = s.size();
for(int i = 0; i <= length - 1; i++){
if(s[i] == ' '){
s += " ";
}
}
int i = s.size() - 1;
for(int j = length - 1; j >= 0; j--){
if(s[j] == ' '){
s[i--] = '0';
s[i--] = '2';
s[i--] = '%';
}
else{
s[i--] = s[j];
}
}
return s;
}
};