一、题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:0 <= s 的长度 <= 10000
二、思路分析
思路
C语言的字符串无法改变大小,所以无法直接在原来的字符串上操作。于是我们先统计空格个数,算出替换后的字符串的大小,并申请一块新内存。(注意要多申请一个byte,放字符串结尾符’\0’)。再次遍历这个字符串,将空格替换成%20。
算法流程:首先得到字符串s的长度
遍历这个字符串,统计空格个数
计算新的字符串需要的空间,并申请一块新内存
遍历字符串s,如果没有空格则进行正常赋值。如果碰到空格,则在新字符串对应的三个位置放上%20
三、整体代码
整体代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
char * replaceSpace( char * s){ int count = 0; int len = 0; while (s[len] != '\0' ){ len++; } int i = 0; for (i = 0; i < len; i++){ if (s[i] == ' ' ){ count++; } } char * str = ( char *) malloc ( sizeof ( char )*(len + 1 + count * 2)); int j = 0; for (i = 0; i < len; i++, j++){ str[j] = s[i]; if (s[i] == ' ' ){ str[j++] = '%' ; str[j++] = '2' ; str[j] = '0' ; } } str[j] = '\0' ; return str; } |
运行,测试通过
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/InnerPeaceHQ/article/details/122973023