题目描述:剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
- 示例 1:
- 输入:s = “We are happy.”
- 输出:“We%20are%20happy.”
题解
1.遍历字符串 s,计算空格数量 n。
2.开辟一个大小为 n*2+strlen(s)+1 的字符数组 ss 来存放新的字符串。
3.再从左至右遍历字符串s:
(1)如果当前字符 s[i] 是空格,则令 ss[j]=’%’、ss[j+1]=‘2’、ss[j+2]=‘0’,并将 j 的值加3,i 的值加1。
(2)如果当前字符 s[i] 不是空格,则令ss[j]=s[i],并将 j 和 i 的值都加上1。
4.遍历结束后,在 ss 末尾加上’\0’。
char* replaceSpace(char* s) {
int n = 0;
for (int i = 0; i<strlen(s); ++i) {
if (s[i] == ' ') ++n;
}
n = n * 2 + strlen(s);
char* ss = (char*)malloc(n+1);
int i = 0, j = 0;
while(i<strlen(s)) {
if (s[i] == ' ') {
ss[j++] = '%'; ss[j++] = '2'; ss[j++] = '0';
++i;
}
else
ss[j++] = s[i++];
}
ss[n] = '\0';
return ss;
}