《剑指offer》替换空格
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
Solution:
#include <iostream> using namespace std; void replaceBlank(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; if(newLength>length) return; int indexOfOrignal=originalLength; int indexOfNew = newLength; while(indexOfOrignal>=0&&indexOfNew>indexOfOrignal) { if(str[indexOfOrignal]==' ') { str[indexOfNew--]='0'; str[indexOfNew--]='2'; str[indexOfNew--]='%'; } else{ str[indexOfNew--]=str[indexOfOrignal]; } --indexOfOrignal; } } int main() { char str[30]="we are happy!"; replaceBlank(str,30); cout<<str<<endl; return 0; }