剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

解题方法

  • 首先遍历字符串,统计出字符串中空格的总数 spaceNum
  • 扩充字符串的长度。设立两个指针,根据数学规律进行后移复制。
class Solution {
public:
    string replaceSpace(string s) {
        int spaceNum = 0;
        for(int i=0;i<s.size();i++){    //统计空格总数
            if(s[i] == ' '){
                ++spaceNum;
            }
        }
        int originalLen = s.size();
        int newLen = originalLen+spaceNum*2;
        s.resize(newLen);   //扩充字符串长度

        int indexOfOriginal = originalLen;
        int indexOfNew = newLen;

        while(indexOfNew>=0){
            if(s[indexOfOriginal] == ' '){
                indexOfOriginal--;
                s[indexOfNew--] = '0';
                s[indexOfNew--] = '2';
                s[indexOfNew--] = '%';
            }else{
                s[indexOfNew--] = s[indexOfOriginal--];
            }
            
        }
        return s;
    }
};
posted @ 2021-03-01 18:31  focusDing  阅读(51)  评论(0编辑  收藏  举报