剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s
中的每个空格替换成"%20"
。
method 1: 模拟
string replaceSpace(string s) {
string t;
for (auto elem : s) {
if (elem == ' ') t += "%20";
else t += elem;
}
return t;
}
method 2: 双指针
两个指针从后往前赋值,p1
指向原string
的末尾,p2
指向新string
末尾,如果p1
不是空格,给p2
赋值p1
,否则p2
从后往前赋值%20
string replaceSpace(string s) {
int n = s.size();
for (int i = 0; i < n; ++i) {
if (isspace(s[i])) s += " ";
}
int p1 = n - 1, p2 = s.size() - 1;
while (p1) {
if (!isspace(s[p1])) {
s[p2--] = s[p1];
}
else {
s[p2--] = '0';
s[p2--] = '2';
s[p2--] = '%';
}
p1--;
}
return s;
}