面试题04_替换空格_剑指Offer系列
题目描写叙述
请实现一个函数,将一个字符串中的空格替换成“%20”。
比如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
这样的题目从前往后扫描的话。须要移动多次。
这样的情况下从后往前扫描。
首先扫描一遍。找到空格的个数,算出须要加入多少个20%,即替换后的字符串的长度 = 原字符串长度 + 空格数*2
准备两个指针一个指针p1指向当前字符串的最后位置,还有一个指针p2指向新字符串的最后位置。
然后依次向前扫描。当遇到空格的时候。p1向前移动一个位置,p2向前移动三个位置,而且依次用20%替换。
代码实现
class Solution {
public://注意:length是整个字符串的总容量 包含未占用的空间
void replaceSpace(char *str, int length) {
//首先推断边界条件,如空啥的
if (str == nullptr || length <= 0)
return;
int originLen = 0;
int numOfblank = 0;
int i = 0;
while (str[i] != '\0')
{
originLen++;
if (str[i] == ' ')
numOfblank++;
i++;
}
int newLen = originLen + numOfblank * 2;
if (newLen > length)
return; while (originLen >= 0 && newLen > originLen)
{
if (str[originLen] == ' ')
{
str[newLen--] = '0';
str[newLen--] = '2';
str[newLen--] = '%';
}
else
str[newLen--] = str[originLen];
originLen--;
}
}
};
面试题04_替换空格_剑指Offer系列的更多相关文章
- 干货 | 剑指offer系列文章汇总
下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现 剑指offer系列 始 剑指offer—灯管问题(1) 剑指offer—10人电梯(2) ...
- 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------>剑指offer系列
题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...
- 剑指Offer系列之题1~题5
目录 1.二维数组的查找 2.替换空格 3.从尾到头打印链表 4.链表中环的入口节点 5.重建二叉树 写在前面:本随笔中包含五道题:题目描述,题目思路以及对应解法. 1.二维数组的查找 在一个二维数组 ...
- 2、替换空格------------>剑指offer系列
题目 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 代码 1.直接用空格将字符串切割成 ...
- 替换空格(剑指offer_5)
题目描述: 将一个字符串中的空格替换成"%20". Input: "A B" Output: "A%20B" 解题思路: 在字符串尾部填充任 ...
- 面试题07_用两个栈实现队列——剑指offer系列
题目描写叙述: 用两个栈实现一个队列. 队列的声明例如以下,请实现它的两个函数appendTail 和 deleteHead.分别完毕在队列尾部插入结点和在队列头部删除结点的功能. 解题思路: 栈的特 ...
- 剑指offer系列47---翻转单词顺序
[题目]输入“I am a student.”>>>“.tneduts a ma I”.>>输出:student. a am I package com.exe9.off ...
- 剑指offer系列27--表示数值的字符串
[题目]请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值. 但是”12e”,”1a3.14 ...
- 剑指offer系列26--正则表达式匹配
[题目]请实现一个函数用来匹配包括’.’和’*‘的正则表达式.模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式.例 ...
随机推荐
- 用delphi检查网络连接状态3种方式
用delphi检查网络连接状态3种方式 用delphi检查网络连接状态 检测计算机是否联网比较简单的做法可以通过一个 Win32 Internet(WinInet) 函数 InternetCheckC ...
- ASP.NET MVC中检测浏览器版本并提示下载更新
如果网站使用html5.css3.自适应等新特性,可能有些浏览器版本不支持.这时候,需要提醒浏览者更新浏览器的版本到最新. 本篇用到的插件为:http://jreject.turnwheel.com/ ...
- Maven 使用了一个标准的目录结构和一个默认的构建生命周期。
Maven 使用了一个标准的目录结构和一个默认的构建生命周期. 约定优于配置 当创建 Maven 工程时,Maven 会创建默认的工程结构.开发者只需要合理的放置文件,而在 pom.xml 中不再需要 ...
- springboot之异步调用@Async
原文:http://www.cnblogs.com/xuwenjin/p/8858050.html 引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交 ...
- 论DELPHI三层的数据序列格式的变化
论DELPHI三层的数据序列格式的变化 要窥三层的数据序列格式,我们可以通过观察DELPHI官方的客户端内存表. 早先流行的是TClientDataSet,它的Data和Delta属性的数据类型都是: ...
- css 滚动条样式
1,Overflow内容溢出时的设置 overflow 水平及垂直方向内容溢出时的设置 overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向内容溢出时的设置 以上三个属性设置 ...
- java.io.IOException: Attempted read from closed stream解决
在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决 原因是EntityUti ...
- MyBatis入参类型是List时判断非空
一.参数list时,先判断是否为空,否则会报错. 二.mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from tab ...
- LuaJit转义的问题
之前在项目中,处理类似!30转为表现的字符串时,有人写了这样的一段代码"\![1-2][0-9]",当换成luajit时启动报错了,出错原因在于转义字符使用不对.在很多语言中,正则 ...
- Android工具类 DateUtil,可以用它方便的进行日期的操作
本文转载自:http://blog.csdn.net/xuduzhoud/article/details/27526177 全部代码如下: DateUtil.java package com.exam ...