九度OJ 题目1510:替换空格
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:1697
解决:436
- 题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 输入:
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
- 输出:
对应每个测试案例,出经过处理后的字符串。
- 样例输入:
We Are Happy
- 样例输出:
We%20Are%20Happy
/********************************** 日期:2013-10-16* 作者:SJF0115* 题号: 九度OJ 题目1510:替换空格* 来源:http://ac.jobdu.com/problem.php?pid=1510* 结果:AC* 来源:剑指Offer* 总结:**********************************/#include<stdio.h>#include<string.h>char str[10000001];int main(){ int i,j,len;while(gets(str)){int count = 0;int len = strlen(str);//统计空格的个数for(i = 0;i < len;i++){if(str[i] == ' '){count++;}}//原始字符串末尾i = len;//替换之后字符串末尾j = 2*count+len;//i == j 表示空格替换完毕while(i != j && i >= 0){if(str[i] == ' '){str[j--] = '0';str[j--] = '2';str[j--] = '%';i--;}else{str[j] = str[i];j--;i--;}}//输出替换之后的字符串len = strlen(str);for(i = 0;i < len;i++){printf("%c",str[i]);}printf("\n");} return 0;}【解析】




【第二种方法】



- 1楼qq506657335昨天 22:08
- 楼主为什么执着于操作那个字符串呢。。。从前往后,碰到空格就输出%20其他原样输出不就好了。。
- Re: SunnyYoona昨天 23:42
- 回复qq506657335n时间复杂度的问题。从字符串前面考虑时间复杂度是O(n^2)n从后考虑时间复杂度是O(n)
- Re: qq5066573351小时前
- 回复SunnyYoonan我是指直接输出到屏幕,不是说操作完字符串再进行输出。。。。
- Re: SunnyYoona1小时前
- 回复qq506657335n这题面试的意思是在字符串中替换之后输出,假如像你说的那样这道题面试就没什么意义了。