前言:看到各种大牛的博客以及刷题记录,自己也想记录刷题的过程。只是记录自己的一点一点的成长而已。
注:刷题模板来源于一个刷题群,牛客网有可以在线做题。
【剑指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; } } };