可以先统计字符串中空格的数目,然后从右往左进行替换。注意的是计算每个字符应该向右移动的位数的时候不仅要考虑普通字符,还要考虑空格。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public: void replaceSpace(char *str,int length) { if(str==NULL || length<=0 || *str=='\0') return; int numSpace=0; for(int i=0;i<length;i++){ if(str[i]==' ') numSpace++; } for(int i=length-1;i>=0;i--){ if(numSpace==0) break; if(str[i]!=' ') str[i+2*numSpace]=str[i]; else{ numSpace--; str[2*numSpace+i]='%'; str[2*numSpace+i+1]='2'; str[2*numSpace+i+2]='0'; } } } };
|