博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目:请实现一个函数,将一个字符串中的空格替换成“%20”
阅读量:6070 次
发布时间:2019-06-20

本文共 1770 字,大约阅读时间需要 5 分钟。

  

 

 

  

/*题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。*//*分析将长度为1的空格替换为长度为3的“%20”,字符差的产度变长。如果允许我们开辟一个新的数组来存放替换空格后的字符串,那么这道题目就非常简 单。设置两个指针分别指向新旧字符串首元素,遍历原字符串,如果碰到空格就在新字符串上填入“%20”,否则就复制元字符串上的内容。但是如果面试官要求在原先的字符串上操作,并且保证原字符串有足够长的空间来存放替换后的字符串,那么我们就得另想方法。如果从前往后替换字符串,那么保存在空格后面的字符串肯定会被覆盖,那么我们就考虑从后往前进行替换。首先遍历原字符串,找出字符串的长度以及其中的空格数量,根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。设置两个指针point1和point2分别指向原字符串和新字符串的末尾位置。如果point1指向内容不为空格,那么将内容赋值给point2指向的位置,如果point1指向为空格,那么从point2开始赋值“02%”直到point1==point2时表明字符串中的所有空格都已经替换完毕。*//*Time:2016-9-8 15:48:57Author:CodingMengmeng*/#include 
using namespace std;//length为系统规定字符串输出的最大长度,固定为一个常数class Solution {public: void replaceSpace(char *str, int length){ int blankNumber = 0;//空格的数量 int oldstringLen;//记录原字符串的长度 //首先遍历原字符串,找出字符串的长度以及其中的空格数量 for (oldstringLen = 0; str[oldstringLen] != '\0'; oldstringLen++){ if (str[oldstringLen] == ' ') blankNumber++; } //根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度 int newstringLen = oldstringLen + blankNumber * 2;//新字符串的长度 if (newstringLen>length) return; str[newstringLen] = '\0';//此行很重要,因为原字符串最后一个字符为'\0' //设置两个指针point1和point2分别指向原字符串和新字符串的末尾位置 int point1 = oldstringLen - 1, point2 = newstringLen - 1;//因为'\0'已经手工加到最后新串的最后一个字符,所以减1咯 while (point1 >= 0 && point2>point1){
//两指针相同时,跳出循环 if (str[point1] == ' '){
//如果point1指向为空格,那么从point2开始赋值“02%” str[point2--] = '0'; str[point2--] = '2'; str[point2--] = '%'; } else //如果point1指向内容不为空格,那么将内容赋值给point2指向的位置 str[point2--] = str[point1]; point1--;//不管是if还是else都要把point1前移,为了下一次的执行 } }};

 

转载地址:http://tbfgx.baihongyu.com/

你可能感兴趣的文章
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
根据调试工具看Vue源码之组件通信(一)
查看>>
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
查看>>
斯坦福-随机图模型-week1.5
查看>>
灵活的运用Model类
查看>>
页面和应用之间的交互
查看>>
hadoop 之分布式安装
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>