c::用字符串代替空格f
来源:互联网 发布:linux svn 创建项目 编辑:程序博客网 时间:2024/05/09 09:17
1、题目要求:
请实现一个函数,把字符数组中的每个空格替换成“%20”。
2、分析:
1)想法一:我们可以再创建一个数组,当遇到空格的时候,就将所要替换的字符串一个一个放进去,这种方法当然可行,但是效率低又造成空间的浪费,所以我们不采取这种方法。
2)想法二:从前往后:在原基础上进行替换(空间是足够的),如果从前往后遇到空格就进行替换,必然后对原来的字符造成覆盖,不可以实现
3)想法三:从后往前:倒着遇到空格就玩够移动同时用字符串进行替换,如果全部都是空格的话,那势必造成时间复杂度O(n^2)的开销,可以实现的,但是做法不是很佳
4)想法四:因为我们要进行的是将字符串“%20”替换空格,所以我们可以利用如下的方式:
*先统计出源字符串中空格的个数
*然后根据要替换的字符串中字符的个数和统计出的空格的个数的关系:
源字符串中空格的个数*2+2=替换后字符串中空格的个数
*我们将源字符串的末尾记录下来,将替换后字符串的末尾记录下来,当源字符串的末尾不为空格的时候,就将源字符串对应的字符赋给替换后的字符串末尾指向的对应位置,否则就进行添加‘0’,‘2’,‘%’,这三个字符,然后源字符串末尾指针继续向前移动,最终结束的时候就是这两个指针相遇的时候。
说了这么一大段,大家估计云里雾里,我用图来进行说明下:(我这里给的源字符串是“we are happy.”)
两个指针一直在往左走最终相遇,替换完成
*代码实现:
/*函数说明:请实现一个函数,把字符数组中的每个空格替换成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。*/#include<stdio.h>void Replace(char *a){char *str = a;int *end = NULL;int *new_end = NULL;int count = 0;while(*str != '\0'){if(*str == ' '){count++;}str++;}end = str-1;new_end = count*2+end;while(end != new_end){if(*end != ' '){*new_end-- = *end--;}else{*new_end-- = '0';*new_end-- = '2';*new_end-- = '%';end--;}}}int main(){char *a = "we are happy";printf("%s\n",a);Replace(a);printf("%s\n",a);//printf("%d\n",Blank_count(a));return 0;}
0 0
- c::用字符串代替空格f
- 用字符串替换空格
- 字符串全用字符代替
- 实现函数,用字符串"%20"替换空格
- 输入三个字符串,将字符串1中里的字符串2用字符串3代替
- 第一次用字符串
- 用字符串调用函数
- 用字符串调用函数
- 用字符串显示图片
- hdu1013注意用字符串!!
- 用字符串实现倒计时
- js调用c/c++dll,用字符串/数组作为参数
- Objective-c语言_用字符串方法和数组如何获取物理IP地址
- C语言:(旧)用字符串自由输入计算的计算器(加减乘除)
- C语言之练习1-9多个空格用一个空格代替
- 用字符串资源显示MessageBox[转载]
- 用字符串调用同名的函数
- 用字符串的方式读取XML
- Dalvik虚拟机进阶
- android studio 2.2.3使用讯飞sdk
- 12种让老板加工资的方式,你知道几种?
- 制作Makefile进行项目管理
- python Collections
- c::用字符串代替空格f
- JavaScript中的函数小结
- Android监听距离传感器
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
- codeforces Good Bye 2016
- 正向代理和反向代理的区别
- 串口
- 装Gogs后ssh无法和远程登录同时使用的解决方案
- MEclipse中SVN的安装步骤(两种)和使用方法