替换空格
【题目描述】
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
【解题思路】
【代码实现】
实现一:
假设:要求在原来的字符串上做替换,并且保证输入的字符串后面有足够多的多余空间。
在原有字符串的基础之上,从后往前逐次移动
1 class Solution { 2 public: 3 //length为str指向区域可以容纳的字符上限 4 void replaceSpace(char *str,int length) { 5 if(str==NULL||length<=0) 6 return; 7 int originalLength=0;//字符数目 8 int numberOfBlank=0;//字符间的空格数目 9 int i=0; 10 while(str[i]!='\0') 11 { 12 ++originalLength; 13 if(str[i]==' ') 14 ++numberOfBlank; 15 ++i; 16 } 17 int newLength=originalLength+numberOfBlank*2; 18 if(newLength>length) 19 return; 20 int indexOfOriginal=originalLength; 21 int indexOfNew=newLength; 22 while(indexOfOriginal>=0&&indexOfOriginal<indexOfNew) 23 { 24 if(str[indexOfOriginal]==' ') 25 { 26 str[indexOfNew--]='0'; 27 str[indexOfNew--]='2'; 28 str[indexOfNew--]='%'; 29 } 30 else 31 { 32 str[indexOfNew--]=str[indexOfOriginal]; 33 } 34 --indexOfOriginal; 35 } 36 } 37 };
实现二:调用库函数
1 class Solution { 2 public: 3 //length为str的长度 4 string replaceSpace(string str,int length) { 5 int i=0; 6 while(i < str.size()) 7 { 8 if(str[i]== ' '){ 9 str.replace(i,1,"%20"); 10 i+=3; 11 } 12 else 13 i++; 14 } 15 return str; 16 } 17 };