【剑指offer02替换空格】
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
一个空格替换成‘%’+‘20’,也就是一个字符位替换为两个字符位,所以先统计空格数,计算替换完成后的字符串总长度为多少。
然后从后往前复制,遇到空格就复制02%
class Solution { public: void replaceSpace(char *str,int length) { if(str==NULL||length<0) return ; int orignallength = 0; // 原始长度 int countofbalnk = 0; //多少个空格 for(int i=0;str[i]!='\0';i++){ orignallength++; if(str[i]==' ') countofbalnk++; } //插入后的长度 每个空格的地方 1->2 int newlength=orignallength+countofbalnk*2; //因为要比原来的长 所以从后往前插入对应字符 // 保证原始的字符还有 while(orignallength>=0) { if(str[orignallength]==' ') {//每添加一个 就得减一 str[newlength--]='0'; str[newlength--]='2'; str[newlength--]='%'; } else {//复制 str[newlength]=str[orignallength]; newlength--; } orignallength--; } } };