字符串替换问题思路1:从前往后的思想替换为从后往前的思想。
//把字符串中的每个空格替换成"%20"。 #include "stdafx.h" #include <iostream> using namespace std; #define length 100 void ReplaceBlank(char string[]) { if(string==NULL) return ; int originalLength=0;//字符串的实际长度 int numberOfBlank=0;//空格的个数 int i=0; while(string[i]!='\0') { ++originalLength; if(string[i]==' ') ++numberOfBlank; ++i; } int newLength=originalLength+2*numberOfBlank;//新字符串的长度 if(newLength>length) return; int indexOfOriginal=originalLength; int indexOfNew=newLength; while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal) { if(string[indexOfOriginal]==' ') { string[indexOfNew--]='0'; string[indexOfNew--]='2'; string[indexOfNew--]='%'; } else { string[indexOfNew--]=string[indexOfOriginal]; } --indexOfOriginal; } } int _tmain(int argc, _TCHAR* argv[]) { char str[length]="We are happy"; ReplaceBlank(str); cout<<str<<endl; return 0; }