题目描述 请实现一个函数,将一个字符串中的空格替换成“ ”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We Are Happy。
class Solution { public: void replaceSpace(char *str,int length) { if(str==NULL||length<=0) return; int originalLength=0; int numberOfBlank=0; int i=0; //先遍历一次字符串,统计出字符串原长度和空格的个数 while(str[i]!='\0'){ ++originalLength; if(str[i]==' ') ++numberOfBlank; ++i; } int newLength=originalLength+numberOfBlank*2; //length为字符数组str的总容量 if(newLength>length) return; //indexOfOriginal的指针指向字符串的末尾 int indexOfOriginal=originalLength; //indexOfNew的指针指向替换之后字符串的末尾 int indexOfNew=newLength; while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal){ //当indexOfOriginal的指针碰到第一个空格,把第一个空格替换成“ ” //把indexOfNew的指针向前移动3格 if(str[indexOfOriginal]==' '){ str[indexOfNew--]='0'; str[indexOfNew--]='2'; str[indexOfNew--]='%'; }else{ //依次复制字符串的内容 str[indexOfNew--]=str[indexOfOriginal]; } //把indexOfOriginal的指针向前移动1格 --indexOfOriginal; } } };