本题来自于LeetCode的剑指offer中替换空格。
本题目首先统计整个字符串的长度及空格的数目,以此得到相应的新字符串的长度来建立新的字符串。
C语言的代码如下:
char* replaceSpace(char* s){
int i = 0, len = strlen(s),j = 0,cnt = 0;
char *ans;
for (i = 0; i<len; i++) //统计字符串中的空格的数目
{
if(s[i] == ' ')
{
cnt++;
}
}
ans = malloc(sizeof(char) * (len + cnt * 2 + 1)); //依据上面的字符串中空格数目设定新的字符串的长度(原长度+空格*2+结束标志位)
for(i = 0; i < len; i++,j++) //重新遍历字符串,将原字符串复制到新的字符串中,并将空格的部分换成相应的字符串。
{
ans[j] = s[i];
if(s[i] == ' ')
{
ans[j++] = '%';
ans[j++] = '2';
ans[j] = '0';
}
}
ans[j] = '\0'; // 字符串的结尾设置‘\0’作为结束标志
return ans;
}