替换空格
来源:互联网 发布:pdf笔记软件 编辑:程序博客网 时间:2024/04/29 22:53
- 题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 输入:
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
- 输出:
对应每个测试案例,出经过处理后的字符串。
第一种解法:不是空格直接输出,是空格输出%20.
#include<cstdio>#include<cstring>#include<cstdlib> char str[100000001];int main(){ while(gets(str)) { int len = strlen(str); for(int i = 0; i < len; i++) { if(str[i] != ' ') printf("%c",str[i]); else { printf("%%20"); } } printf("\n"); memset(str,0,sizeof(str)); } return 0;}
第二种解法:将原来的字符串替换。先遍历一次字符串,统计字符串空格数,并算出替换后的字符串总长度。然后从后面开始复制和替换。时间复杂度为O(n)。#include<cstdio>#include<cstring>#include<cstdlib>char str[10000001];void ReplaceBlank(char string[]){ //originalLength为字符串string的实际长度 int originalLength = 0; int numberOfBlank = 0; int i = 0; while(string[i] != '\0') { ++originalLength; if(string[i] == ' ') ++numberOfBlank; ++i; } int newLength = originalLength + numberOfBlank * 2; int indexOfOriginal = originalLength; int indexOfNew = newLength; while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) { if(string[indexOfOriginal] == ' ') { string[indexOfNew--] = '0'; string[indexOfNew--] = '2'; string[indexOfNew--] = '%'; } else { string[indexOfNew--] = string[indexOfOriginal]; } --indexOfOriginal; }}int main(){ while(gets(str)) { ReplaceBlank(str); printf("%s\n",str); } return 0;}
0 0
- 空格替换
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 空格替换
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- 替换空格
- dfs
- QT保存设置QSetting
- Make prettier documents by reusing chunks in RMarkdown
- Accelerated C++ Exercises Ch12
- Appserv 2.5.10 升级PHP from version 5.2 to 5.3
- 替换空格
- mybatis与spring3.1整合
- gson递归解析json数据
- Java设计模式-7-中介者模式
- CodeForces 13C Sequence
- Bin 和 App_Code、App_Themes文件夹
- QT数据库连接必备QSqlDatabase
- Android学习——查看apk签名 和 keystore 的信息
- Mac配置环境变量(Java,Android,Gradle,Maven,Hosts)