程序员面试笔记---替换空格
2017-02-27 22:06
113 查看
在网络编程中,如果URL参数中含有特殊字符,如空格、#等,可能导致服务器端无法获得正确的参数值。因此,需要将这些特殊符号转换为服务器可以识别的字符。
转换的规则:在%后面跟上ASCII码的两位十六进制的表示。如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成“%20”.
问题:如何实现一个函数,把字符串中的每个空格替换成“%20”.例如:My name is Irene. 输出为My%20name%20is%20Irene...
做法:首先遍历一次字符串,统计出字符串中空格的总数,并计算出替换之后字符串的总长度。每替换一个空格,长度增加2,故替换之后字符串的长度等于原来的长度加上2*空格数目。在My name is Irene.中,字符串长度为18,替换之后的长度为24.
源代码编辑如下:亲测有效哦。。
这个方法的时间复杂度为O(n),
转换的规则:在%后面跟上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--] = '%'; } else Str[indexofNew--] = Str[indexofOriginal]; --indexofOriginal; } }
这个方法的时间复杂度为O(n),
相关文章推荐
- 程序员面试题精选——替换空格和清除空格
- 面试算法(三)替换空格
- 面试题目4—替换空格
- C/C++ 学习笔记[02].替换Tab为空格,并在TabStop的位置停止
- 面试4之字符串中的空格全部替换为“%20”
- 数据结构与算法分析笔记与总结(java实现)--字符串10:空格替换练习题
- 【剑指Offer面试编程题】题目1510:替换空格--九度OJ
- 【面试算法系列】替换字符串中的空格为其他字符 - C语言实现
- 【练习笔记】剑指offer-面试题4 :替换空格
- 面试题目4:替换空格
- 面试之路(20)-字符串中空格替换一类问题详解
- 面试杂题(六)替换空格
- 面试需要的基础知识-替换空格
- 面试之路(20)-字符串中空格替换一类问题详解
- 【程序员代码面试指南 编程笔记】猫狗队列(C++解法)
- 面试之路(20)-字符串中空格替换一类问题详解
- 剑指Offer笔记—— 二维数组中的查找 替换空格
- 《剑指Offer》学习笔记--面试题4:替换空格
- 面试之路(20)-字符串中空格替换一类问题详解
- 面试训练替换空格