我觉得这道题并不简单,说到底还是C++代码打得少
char*和char[]都是c风格字符串,我们将其强制转换为string更好操作。如果该指针指向nullptr或者长度小于0直接return。用两个string操作,一个用来被遍历,一个用来存最后结果的值。用:来遍历更高级一点,如果当前字符为空格,就在结果后面加上%20,反之就加上该字符。string就是好,加上char还是加上string都可以。
最后用strcpy将结果拷贝回字符串指针,strcpy()参数就是两个C风格字符串,字符数组or字符指针应该都可。所以我们要将string用c_str()转化为C风格字符串再拷贝。
class Solution {
public:
void replaceSpace(char *str,int length) {
string res, s = str;
if(str == nullptr || length <= 0) return;
for(char c : s){
if(c == ' '){
res += "%20";
}
else{
res += c;
}
}
strcpy(str, res.c_str());
}
};