替换空格
2016-09-10 16:07
204 查看
题目:请实现一个函数,把字符串中的每一个空格替换成”%20”。例如输入”we are happy.”,则输出”we%20are%20happy.”。
分析:
将长度为1的空格替换为长度为3的“%20”,字符串的长度变长。如果允许我们开辟一个新的数组来存放替换空格后的字符串,那么这道题目就非常简 单。设置两个指针分别指向新旧字符串首元素,遍历原字符串,如果碰到空格就在新字符串上填入“%20”,否则就复制元字符串上的内容。但是如果面试官要求 在原先的字符串上操作,并且保证原字符串有足够长的空间来存放替换后的字符串,那么我们就得另想方法。
如果从前往后替换字符串,那么保存在空格后面的字符串肯定会被覆盖,那么我们就考虑从后往前进行替换。
首先遍历原字符串,找出字符串的长度以及其中的空格数量,
根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。
设置两个指针p1和2分别指向原字符串和新字符串的末尾位置。
如果p1指向内容不为空格,那么将内容赋值给p2指向的位置,如果p1指向为空格,那么从p2开始赋值“02%”
直到p1==p2时表明字符串中的所有空格都已经替换完毕。
代码:
测试:
分析:
将长度为1的空格替换为长度为3的“%20”,字符串的长度变长。如果允许我们开辟一个新的数组来存放替换空格后的字符串,那么这道题目就非常简 单。设置两个指针分别指向新旧字符串首元素,遍历原字符串,如果碰到空格就在新字符串上填入“%20”,否则就复制元字符串上的内容。但是如果面试官要求 在原先的字符串上操作,并且保证原字符串有足够长的空间来存放替换后的字符串,那么我们就得另想方法。
如果从前往后替换字符串,那么保存在空格后面的字符串肯定会被覆盖,那么我们就考虑从后往前进行替换。
首先遍历原字符串,找出字符串的长度以及其中的空格数量,
根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。
设置两个指针p1和2分别指向原字符串和新字符串的末尾位置。
如果p1指向内容不为空格,那么将内容赋值给p2指向的位置,如果p1指向为空格,那么从p2开始赋值“02%”
直到p1==p2时表明字符串中的所有空格都已经替换完毕。
代码:
#include <iostream> using namespace std; //假设字符数组后面有足够的空间 void ReplaceBlank(char* str, int len) { if (str == nullptr || len < 0) return; int NumOfBlank = 0; int index = 0; /* 计算 字符数组中的空格数 和 字符串的长度*/ while (str[index] != '\0') { if (str[index] == ' ') { NumOfBlank++; } index++; } int len1 = index; //指向字符串的末尾,此时p1指向'\0' /* 计算 总长度 */ int NewLen = index + 2 * NumOfBlank; if (NewLen > len) return; /* 替换空格 */ int len2 = NewLen; while (len1 >= 0 && len > len2) { if (str[len1] == ' ') { str[len2--] = '0'; str[len2--] = '2'; str[len2--] = '%'; len1--; } else { str[len2--] = str[len1--]; } } for (int i = 0; i < NewLen ; i++) { cout << str[i]; } cout << endl; } int main() { const int length = 100; //数组长度 char str[length] = "we are happy."; ReplaceBlank(str,length); system("pause"); return 0; }
测试:
相关文章推荐
- 替换字符串中的空格
- Oracle 替换表中对应字段中的 空格 换行 回车符
- [剑指offer-1510]替换空格
- 剑指offer(二) 替换空格
- 4 替换空格
- 面试题4:替换空格
- 字符串空格替换练习题
- 剑指offer面试题之替换空格
- Sublime text 3设置用用空格替换tab键
- 面试题4:替换空格
- 【剑指offer】替换空格
- 剑指offer系列之2:字符串空格的替换
- Emacs-009-让Tab键不被空格替换
- 剑指Offer-- 两个栈模拟队列 替换空格
- 剑指offer-----面试题4(替换空格)
- 剑指offer题4_替换空格
- Sublime text 3设置空格替换tab键
- 替换字符串中的空格为%20
- 替换空格
- 请实现一个函数,把字符串中的每个空格替换成“%20”。