程序员面试笔记---替换空格
来源:互联网 发布:淘宝千里眼怎么安装 编辑:程序博客网 时间:2024/06/03 22:44
在网络编程中,如果URL参数中含有特殊字符,如空格、#等,可能导致服务器端无法获得正确的参数值。因此,需要将这些特殊符号转换为服务器可以识别的字符。
转换的规则:在%后面跟上ASCII码的两位十六进制的表示。如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成“%20”.
问题:如何实现一个函数,把字符串中的每个空格替换成“%20”.例如:My name is Irene. 输出为My%20name%20is%20Irene...
做法:首先遍历一次字符串,统计出字符串中空格的总数,并计算出替换之后字符串的总长度。每替换一个空格,长度增加2,故替换之后字符串的长度等于原来的长度加上2*空格数目。在My name is Irene.中,字符串长度为18,替换之后的长度为24.
源代码编辑如下:亲测有效哦。。
#include<iostream>#include<string>//不是<string.h>,带.h的是C语言中的头文件void RepalceBlank(char Str[], int length);using namespace std;//strlen 计算字符串里面一共有多少个字符//sizeof 计算字符串占的总内存空间int main(){char Str[100];//cin >> Str;//不能读取空格gets_s(Str);////////////////////////////getline的用法/*string ssttr;getline(cin, ssttr);int length1 = sizeof(ssttr);*/////////////////////////////int length = sizeof(Str);RepalceBlank(Str, length);//数组名称直接作为指针进行地址传递。cout << Str << endl;cout << strlen(Str) << endl;return 0;}//length是字符数组的容量void RepalceBlank(char Str[], int length){if (Str == NULL || length <= 0)return;int originalLength = 0;//字符串Str 的实际长度int numberofBlank = 0;int i = 0;//遍历字符串,统计字符串的实际长度以及空格数while (Str[i] != '\0'){++originalLength;if (Str[i] == ' ')++numberofBlank;++i;}int newlength = originalLength + numberofBlank * 2;//替换空格之后的长度
//如果数组溢出,放弃替换。if (newlength > length)return; //替换前后两个数组的指针序列号int indexofOriginal = originalLength;int indexofNew = newlength; //从替换前后两个数组的最后一个字符开始替换,所有的字符只移动一次,时间复杂度比较小。while (indexofOriginal >= 0 && indexofNew> indexofOriginal){if (Str[indexofOriginal] == ' '){Str[indexofNew--] = '0';Str[indexofNew--] = '2';Str[indexofNew--] = '%';}elseStr[indexofNew--] = Str[indexofOriginal];--indexofOriginal;}}
这个方法的时间复杂度为O(n),
0 0
- 程序员面试笔记---替换空格
- 程序员面试经典--空格替换
- [程序员面试宝典]空格替换
- 《程序员面试金典》--空格替换
- 《程序员面试金典》空格替换
- 程序员面试金典 1.4 空格替换
- 程序员面试金典题解 空格替换
- 【程序员面试金典】空格替换
- 面试训练替换空格
- 程序员面试金典——空格替换
- 《Cracking the Coding Interview程序员面试金典》----空格替换
- 程序员面试金典(4):空格替换(python)
- 面试题目4:替换空格
- 程序员面试金典(3)字符串中空格替换为"%20"
- 空格替换(剑指offer+程序员面试金典)+string类知识点讲解
- 程序员面试金典: 9.1数组与字符串 4字符串中空格全部替换为"%20"
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- 程序员面试金典:字符串--确定字符串互异、原串翻转、空格替换
- Laravel收发邮件一个致命的错误
- 解决jQuery的$冲突问题
- 【codevs1916】[网络流24题]负载平衡问题
- Java的Spi机制研究
- 【Mybatis】(四)详解SqlMapConfig.xml文件
- 程序员面试笔记---替换空格
- 卸载ap导致的重启问题回顾
- 排序——希尔排序
- 自己编写的简单shell
- 小鸦视角-看关系数据库MSSQL-view(视图)+存储过程+索引
- HTTP协议中的1xx,2xx,3xx,4xx,5xx状态码分别表示什么,列举常见错误码及含义
- [C++学习]剑指offer13题的学习笔记
- css的相对定位
- linux与各操作系统的区别