【剑指offer系列】 替换空格___4

  题目描述:
  实现一个函数,把字符串中的每个空格替换成%20,

  示例:
  输入:“We are happy”
  输出:“We%20are%20happy”
  
  分析:
  1)先正向遍历字符串,统计字符串中空格的长度,得到替换后的字符串长度
  2)反向填充字符串,遇到空格时,则反向填充%20
  时间复杂度为O(n)

  代码:  

void replace(char str[],int length){
    int len=0;
    int blankCnt=0;
    while(str[len]!='\0'){
        if(str[len]==' ')   ++blankCnt;   //空格数
        ++len;                           //原字符串长度
    }

    int newLength=len+2*blankCnt;  //替换后字符串占用长度
    if(newLength>length)    return;

    int i=len-1,j=newLength-1;
    while(i>=0){             //反向遍历替换
        if(str[i]!=' ') str[j--]=str[i];
        else{
            str[j--]='0';
            str[j--]='2';
            str[j--]='%';
        }
        --i;
    }
}

你可能感兴趣的:(【剑指offer系列】 替换空格___4)