题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) { // length是字符数组str的总容量
if (str == nullptr || length < 0) {
return;
}
int i = 0, blankNum = 0, n = 0;
while (str[i] != '\0') {
if (str[i] == ' ') {
++blankNum;
}
++n;
++i;
}
int newLength = n + blankNum * 2;
if (newLength > length) { // 确保不会越界
return;
}
while (n >= 0 && newLength > n) { // 直接从 n 开始,因为 '\0' 也需要移动
if (str[n] == ' ') {
str[newLength--] = '0';
str[newLength--] = '2';
str[newLength--] = '%';
} else {
str[newLength--] = str[n];
}
--n;
}
}
};
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL || length==0) return;
int size=0;
int blank=0;
char *p=str;
while(*p!='\0'){
if(*p==' '){
blank++;
}
size++;
p++;
}
int newsize=size+blank*2;
if(newsize>length){
return;
}
while(newsize>=0 && blank>0){
if(str[size]==' '){
str[newsize--]='0';
str[newsize--]='2';
str[newsize--]='%';
blank--;
}else{
str[newsize--]=str[size];
}
size--;
}
return;
}
};