请实现一个函数,把字符串 s 中的每个空格替换成"%20"- 示例 1:
- 输入:s = "We are happy."
- 输出:"We%20are%20happy."
-
- 限制:
- 0 <= s 的长度 <= 10000
复制代码- int main(){
- // STL
- string s;
- string sp="%20";
- // 输入带空格的string
- getline(cin,s);
- int j = 0;
- for(int i=0; i<s.size(); i++){
- if(s[i]==' '){
- s.replace(i,1,sp);
- }
- }
- printf("%s", s.c_str());
- return 0;
- }
复制代码- //双指针法:解题思路,先求出空格数,然后判断若是空格则替换
- int main(){
- string s;
- getline(cin,s);
- int j=0, num=0, i=0;//num用于统计空格数
- for(int i=0; i<s.size(); i++){
- if(s[i]==' '){
- num++;
- }
- }
- j=s.size();
- i=j+2*num;//i表示替换之后的string长度
- s.resize(i);
- while(j<i){//当j<i表明没有空格了
- if(s[j]!=' '){
- s[i--]=s[j--];
- }
- else{
- s[i--]='0';
- s[i--]='2';
- s[i--]='%';
- j--;
- }
- }
- printf("%s", s.c_str());
- }
复制代码 |