题目1510:替换空格
来源:互联网 发布:人工智能在线观看土豆 编辑:程序博客网 时间:2024/06/05 18:48
- 题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 输入:
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
- 输出:
对应每个测试案例,出经过处理后的字符串。
- 样例输入:
We Are Happy
- 样例输出:
We%20Are%20Happy
这是剑指offer上面的一道题目,被九度改编成了上机题。
如果要单纯的完成这道题,有个很简单的思路就是,遇到非空格就输出,遇到空格就输出“%20”。对应代码是这样的:
#include <iostream>#include <string>#include <cstdio> using namespace std; int main(){ char str[10000001]; while(gets(str)) { int i=0; while(str[i]!='\0') { if(str[i]==' ') cout<<"%20"; else cout<<str[i]; i++; } cout<<endl; } return 0;} /************************************************************** Problem: 1510 User: 小燧石 Language: C++ Result: Accepted Time:20 ms Memory:11216 kb****************************************************************/
但是,很明显这是一种投机取巧的办法,不是题目的本意。我想题目的本意应该是不使用其他的缓冲区,将这样的字符串转存为题目中的形式。
《剑指offer》中分析的很清楚,如果从前往后找空格,遇到空格时将后面的字符后移,这样后面的字符会多次移动,影响效率。如果先计算出空格数目,从后往前,就可以实现一个字符只移动一次。转换一个思路。效率会大增,上代码:
#include <iostream>#include <string.h>#include <cstdio> usingnamespace std; charstr[10000001]; intmain(){ while(gets(str)) { intnum=0,len=0; len = strlen(str); for(inti=0;i<len;i++) { if(str[i]==' ') num++; } for(inti=len-1;i>=0;i--) { str[i+num*2] = str[i]; if(str[i]==' ') { str[i+num*2]='0'; str[i+num*2-1]='2'; str[i+num*2-2]='%'; num--; } } len = strlen(str); for(inti=0;i<len;i++) { cout<<str[i]; } cout<<endl; } return0;} /************************************************************** Problem: 1510 User: 小燧石 Language: C++ Result: Accepted Time:30 ms Memory:11284 kb****************************************************************/
0 0
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格
- 题目1510:替换空格 jobdu
- 题目1510:替换空格-九度
- 剑指offer-4/题目1510:替换空格
- 九度OJ 题目1510:替换空格
- 【剑指offer】题目1510:替换空格
- 九度OJ-题目1510:替换空格
- 九度oj_题目1510:替换空格
- 题目:空格替换
- hql语句
- 『算法学习笔记』10th day. 文件操作<1>
- vlc的第三方库contrib的修改:live库的修改
- 二分求幂
- Crixalis's Equipment
- 题目1510:替换空格
- vlc的应用:vlc的远程控制
- 交换十六进制的的高低字节
- 版本管理:Git 使用起步(一)
- Git SSH登录
- win8任务管理器中进程网络始终为0的解决方案
- 20140226Library
- QProcess学习
- Linux如何挂载根文件系统