题目:将字符串中的空格替换为%20,如We are Happy.,替换为We%20are%20 Happy.,复杂度为O(n).
//为字符串空格处换成20% #include <iostream> using namespace std; void ReplaceBlank(char *str,const int length) { if (str==nullptr&&length<=0) { return; } int OriginLength=0; int numberofblank=0; int i=0; while (*(str+i)!='\0') { ++OriginLength; if (*(str+i)==' ') { ++numberofblank; } ++i; } int newlength=OriginLength+numberofblank*2; if (newlength>length) { return; } int indexOrigni=OriginLength; int indexofNew=newlength; while (indexOrigni>=0&&indexOrigni<indexofNew) { if (str[indexOrigni]!=' ') { str[newlength--]=str[indexOrigni]; } else { str[newlength--]='0'; str[newlength--]='2'; str[newlength--]='%'; } --indexOrigni; } i=0; while (*(str+i)!='\0') { cout<<*(str+i); ++i; } return; } int main() { const int length=30; char str[length] ="We are happy."; ReplaceBlank(str,length); return 0; }