题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法
还以为直接来个for遍历的同时来个输出就可以了,原来是要在原字符串上面修改啊,那就计算一下替换过后的字符串长度,然后,从后到前替换,避免覆盖。
code
int cnt = 0;
for(int i=0; i<length; i++)
if (str[i] == ' ')
cnt++;
int ll = length+cnt*2; // 替换之后的字符串长度
str[ll--]='\0'; //结尾符号
--length;
while(length >=0 && ll > length ){
if(str[length] == ' '){
str[ll--] = '0';
str[ll--] = '2';
str[ll--] = '%';
}
else
str[ll--]= str[length];
length--;
}
java的写法更是简单
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replaceAll(" ","%20");
}
}
但是:
答案正确(提交异常):答案正确,但系统检测你的代码与已有通过的代码相似度过高。
这就没办法了。