1 题目:
假定一段路径记作字符串 path
,其中以 ".
" 作为分隔符。现需将路径加密,加密方法为将 path
中的分隔符替换为"20%",请返回加密后的字符串。
2 参考 :
3 代码:
C++
class Solution {
public:
string replaceSpace(string s) {
int count=0;
int r = s.size();
for(int i=0; i<s.size(); i++){
if(s[i]==' '){
count++;
}
}
int l = r + count * 2;
s.resize(s.size() + count * 2);
for(int j=r-1,k=l-1; j<k; j--,k--){
if(s[j]!=' '){
s[k]=s[j];
}
else{
s[k]='0';
s[k-1]='2';
s[k-2]='%';
k-=2;
}
}
return s;
}
};
Python
# 1
class Solution:
def replaceSpace(self, s: str) -> str:
counter = s.count(' ')
res = list(s)
res.extend([' '] * counter * 2)
l = len(s) - 1
r = len(res) - 1
while l>=0:
if res[l] != ' ':
res[r] = res[l]
r -= 1
else:
res[r-2 : r+1] = '%20'
r -= 3
l -= 1
return ''.join(res)
# 2
class Solution:
def replaceSpace(self, s: str) -> str:
res = []
for i in range(len(s)):
if s[i] == ' ':
res.append('%20')
else:
res.append(s[i])
return ''.join(res)
# 3
class Solution:
def replaceSpace(self, s: str) -> str:
counter = s.count(' ')
res = list(s)
res.extend([' '] * counter * 2)
l = len(s) - 1
r = len(res) - 1
while l>=0:
if res[l] != ' ':
res[r] = res[l]
r -= 1
else:
res[r-2 : r+1] = '%20'
r -= 3
l -= 1
return ''.join(res)
4 思路:
- 初始化一个 list (Python) ,记为 res ;
- 遍历列表 path 中的每个字符 c :
- 当 c 为空格时:向 res 后添加空格 " " ;
- 当 c 不为空格时:向 res 后添加字符 c ;
- 将列表 res 转化为字符串并返回。