力扣每日一题——剑指 Offer 05. 替换空格
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
代码注释
void replaceSpace(char s[]){
int origLength = 0; //字符串原有长度
int i = 0,count = 0;
while(s[i]!='\0'){
origLength++;
if(s[i]==' ')
count++;
i++; //空格个数
}
int newLength = origLength+count*2; //替换后的字符串长度
int indexRear = newLength;
//初始值指向替换后数组的最后一个元素 ,将每个字符挨个向后移
int indexFront = origLength;
//初始值指向原数组的最后一个元素,向前寻找空格,遇到了则让indexRear开始填%20
while(indexFront>=0 && indexRear!=indexFront){
if(s[indexFront]==' '){
s[indexRear-- ] = '0';
s[indexRear-- ] = '2';
s[indexRear-- ] = '%';
}else{
s[indexRear--] = s[indexFront];
}
indexFront--;
}
}
反思心得
C语言和c++中字符串是可变的,所以可以不用新建字符串,原地修改,但Python和 Java 等语言中,字符串都被设计成“不可变”的类型,需要新建一个字符串遍历添加。