您的位置:首页 > 职场人生

剑指offer--面试题4:替换空格

2016-09-26 13:16 288 查看


题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
c++实现:

//length为牛客系统规定字符串输出的最大长度,固定为一个常数
class Solution {
public:
    //直接原地修改原字符串
    void replaceSpace(char *str,int length) {
        if(str==NULL||length<=0)
            return;
        //统计空格数
        int cntOfSpaces = 0, oldLen = 0;
        for(int i=0; str[i]!='\0'; i++){
            oldLen += 1;
            if(str[i]==' ')
                cntOfSpaces += 1;
        }
        int newLen = oldLen+cntOfSpaces*2;
        if(newLen>length)//不加这一句也能ac
            return;
        int idx = newLen, i = oldLen;//不是newLen-1,因为还得算上最后的'\0'
        while(i>=0){
            if(str[i]==' '){
                str[idx--]='0';
                str[idx--]='2';
                str[idx--]='%';
            }else{
                str[idx--]=str[i];
            }
            i--;
        }
  
9fe9
  }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: