-
题目描述:
-
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
-
输入:
-
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
-
输出:
-
对应每个测试案例,出经过处理后的字符串。
-
样例输入:
-
We Are Happy
-
样例输出:
-
We%20Are%20Happy
void Replace(char* str,int len) { int i,OriLen,NewLen,count; if(str==NULL) return ; i=OriLen=count=0; while(str[i]!='\0') { OriLen++; if(str[i]==' ') count++; i++; } NewLen=OriLen+2*count; if(NewLen>len) return ; while(OriLen>=0) { if(str[OriLen]!=' ') str[NewLen--]=str[OriLen]; else { str[NewLen--]='0'; str[NewLen--]='2'; str[NewLen--]='%'; } OriLen--; } } void main() { char str[30]=" We Are Happy"; Replace(str,30); printf("%s\n",str); }
该方法的时间复杂度为O(n)效率较高,从字符串末尾开始进行操作,与一般从前面一个个开始操作有所区别。