【剑指offer刷题】-05-替换字符串

前言:看到各种大牛的博客以及刷题记录,自己也想记录刷题的过程。只是记录自己的一点一点的成长而已。

注:刷题模板来源于一个刷题群,牛客网有可以在线做题。

【剑指Offer 】05 替换字符串
难度:简单
题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

注:此题考查字符串的知识点

思路:先遍历字符串,统计字符串的空格数cntBlank并计算字符串长度strLength,替换后的字符串长度len=strLength+2*cntBlank;接下来,从后往前开始复制和替换,用两个指针*pstr1-——指向原字符串的末尾和*pstr2——指向替换字符串的末尾,若遇到空格即*pstr1==' ',执行替换:*pstr2--='0';*pstr2--='2',*pstr2--='%';若不是空格,则直接复制*pstr2--=*pstr1;直到两个指针相遇。(源于剑指offer)

class Solution {
public:

    void replaceSpace(char *str,int length) {
       //判断字符串是否为空(特例判断)
        if(str==nullptr||length<=0)
            return;
        int strLength=0;
        int cntBlank=0;
        //遍历字符串统计字符串长度和空格数
        for(int i=0;str[i]!='\0';++i){
            ++strLength;
            if(str[i]==' ')
                ++cntBlank;
        }
        int len=strLength+2*cntBlank;
        if(len>length)
            return;
        //字符串替换和复制
        char*pstr1=str+strLength;
        char*pstr2=str+len;
        while(pstr1<pstr2){
         if(*pstr1==' '){
                *pstr2--='0';
                *pstr2--='2';
                *pstr2--='%';
            }
        else{
            *pstr2--=*pstr1;
        }
            --pstr1;
        }
 }
};



猜你喜欢

转载自blog.csdn.net/xmc_muncy/article/details/80714190
今日推荐