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 };
原文:http://www.cnblogs.com/lou424/p/5047693.html