第一种解法:流函数stringstream的运用
class Solution { public: string replaceSpaces(string S, int length) { stringstream ss; for (int i = 0; i < length; ++i) { if (S[i] != ' ') { ss << S[i]; } else { ss << "%20"; } } return ss.str(); } };
substr()方法用于字符串的截取
两个参数用法:
字符串.substr(参数1,参数2)
1
参数1(可以是0、正整数、负数)
参数1:
如果是0或正整数,则代表字符串截取的起始下标 如果是负数,则代表从倒数第几个字符开始截取
一般来说可以直接返回S了,但是题目要求字符串串尾不能有’ ',所以在返回前先substr一下
class Solution { public: string replaceSpaces(string s, int length) { int cnt=0; for(int i=0;i<length;i++){ if(s[i]==' ')cnt++; } int newlength=length+2*cnt; int i=length-1,j=newlength-1; for(;i>=0&&i!=j;i--){ if(s[i]==' '){ s[j--]='0'; s[j--]='2'; s[j--]='%'; } else{ s[j--]=s[i]; } } s=s.substr(0,newlength); return s; } };
此法乃是双指针。