将字符串中的每个空格都替换成Mr.Yang,但不能申请新的buffer,同时要保证O(n)级的时间复杂度。(原题是替换成20%)
//思路:将字符串从后开始 把每个字符移动到totalLen--(包含了新添加字符的空间) 因此需要先算出字符串长度len 以及空格个数 然后算出totalLen
void ChangeSpace(char* s){
int len = 0;
int spaceCount = 0;
int totalLen = 0;
while (s[len]){
if (s[len] == ' '){
spaceCount++;
}
len++;
}
totalLen = len + spaceCount * 6;//取决于你替换字符串的字符个数
while (totalLen){
if (s[len] != ' '){
s[totalLen--] = s[len];//不是空格都往后移动
}
else{//是空格都用Mr.Yang填充
s[totalLen--] = 'g';
s[totalLen--] = 'n';
s[totalLen--] = 'a';
s[totalLen--] = 'Y';
s[totalLen--] = '.';
s[totalLen--] = 'r';
s[totalLen--] = 'M';
}
len--;
}
printf("%s", s);
}