算法刷题记录.leetcode剑指offer05替换空格

38 阅读1分钟

题目表述

请实现一个函数,把字符串 s 中的每个空格替换成"%20";

解法分析

  • 统一扩容。
  • 双指针从后面遍历+赋值,降低时间复杂度。第一个指针指向旧字符串结尾,第二个指针指向新字符串结尾。

代码

class Solution {

public:

string replaceSpace(string s) {

int count = 0;

for(int i=0;i<s.size();i++){

\


if(s[i]==' '){

count++;

}

}

int soldsize = s.size();

s.resize(soldsize+2*count);

int snewsize = s.size();

int j = snewsize-1;

for(int i = soldsize-1; i >= 0; i--){

if(s[i] == ' '){

s[j] = '0';

s[j-1] = '2';

s[j-2] = '%';

j -= 3;

}else{

s[j] = s[i];

j--;

}

}

return s;

}

};