【面试题】剑指offer04--替换字符串中的空格
来源:互联网 发布:编程中输出怎么写 编辑:程序博客网 时间:2024/05/22 13:08
请实现一个函数,把字符串中的每个空格替换成“%20”。
例如:输入“We are happy.”则输出“We%20are%20happy.”
首先,我们可以画图来表示:
当我们需要将空格换成%20 的时候,则一个空格就要变成三个空格来替换成%20,如图所示:
代码实现的时候,并不是变成三个,而是每有一个空格,则就在将原来的长度上增加2倍的空格的长度。
NewLen = OldLen + BlankNum * 2;在实现代码的时候,首先要定义算出原来的长度Oldlen,字符串中的空格的个数BankNum,根据空格的个数算出替换字符串后的新数组的长度
第一步是计算原数组的长度和空格的个数:
while (arr[OldLen] != '\0')//当没有到字符串结尾处时,继续执行{if (arr[OldLen] == ' ')//当遇到空格时,空格个数增加1;{BlankNum++;}OldLen++;//只要数组没有到达结尾,length1就增加1}接下来就是进行空格的替换:
while (OldBack != 0){if (arr[OldBack] == ' '){arr[NewBack--] = '0';arr[NewBack--] = '2';arr[NewBack] = '%';}else{arr[NewBack] = arr[OldBack];}OldBack--;NewBack--;}还有打印数组的函数的实现。
以下是完整的代码:
//请实现一个函数,把字符串中的每个空格替换成“%20”。//例如:输入“We are happy.”则输出“We%20are%20happy.”。#include<iostream>using namespace std;#include<assert.h>void ReplaceBlank(char *arr){assert(arr);//先统计字符串的实际长度和空格的个数int OldLen = 0;//定义数组的实际长度int NewLen = 0;int BlankNum = 0;//定义计算数组中的空格的个数int NewBack = 0;int OldBack = 0;while (arr[OldLen] != '\0')//当没有到字符串结尾处时,继续执行{if (arr[OldLen] == ' ')//当遇到空格时,空格个数增加1;{BlankNum++;}OldLen++;//只要数组没有到达结尾,length1就增加1}NewLen = OldLen + BlankNum * 2;//替换空格后的数组的长度等于原来的长度+空格的长度乘以2OldBack = OldLen - 1;NewBack = NewLen - 1;while (OldBack != 0){if (arr[OldBack] == ' '){arr[NewBack--] = '0';arr[NewBack--] = '2';arr[NewBack] = '%';}else{arr[NewBack] = arr[OldBack];}OldBack--;NewBack--;}}void PrintArr(char arr[])//打印数组的函数 {int len = strlen(arr);int i = 0;for (i = 0; i < len; ++i){cout << arr[i];}cout << endl;}int main(){char arr[20] = "We are happy.";cout << "替换前的字符串:";PrintArr(arr);ReplaceBlank(arr);cout << "替换后的字符串:";PrintArr(arr);system("pause");return 0;}代码实现的结果:
0 0
- 【面试题】剑指offer04--替换字符串中的空格
- 面试题4:替换字符串中的空格
- 剑指offer面试题4:替换字符串中的空格
- 剑指offer04题字符串中空格替换
- 面试题 -- 字符串替换空格
- 剑指offer中的面试题替换空格
- C++笔试题(剑指offer 面试题4 替换字符串中的空格)
- 剑指offer 面试题4—替换字符串中空格
- 剑指offer 面试题4—替换字符串中空格
- 面试题4:字符串_空格替换
- 剑指offer面试题:替换空格(将字符串每个空格替换为%20)
- 面试题四 替换字符中的空格
- 面试题:替换空格
- 剑指Offer算法题之字符串替换字符--面试题4:替换空格
- 剑指offer-->面试题4 替换空格
- 《剑指offer》面试题4 替换空格
- 【剑指offer】面试题4:替换空格
- 【剑指offer】面试题4替换空格
- 宏
- SpringMVC入门
- Havel-Hakimi定理
- linux/unix 基本概念的认识(sha-bang 、PPA)
- centOS7访问nginx失败解决-.0:80 failed (98: Address already in use)解决
- 【面试题】剑指offer04--替换字符串中的空格
- vim配置及插件安装管理(超级详细)
- 程序员,你为什么值这么多钱?
- 2017 东北四省赛热身赛 C
- 字符数组和字符指针
- CSS视口单位
- UEditor-前端使用心得(前后端分离实践)
- 斯坦福机器学习笔记十一
- 欢迎使用CSDN-markdown编辑器