面试题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次). 在本题中,匹配是指字符串的所有字符匹配整个模式.例 ...
随机推荐
- embOS实时操作系统 - 任务状态
A task may be in one of several states at any given time. When a task is created, it is placed into ...
- 根据twitter的snowflake算法生成唯一ID
C#版本 /// <summary> /// 根据twitter的snowflake算法生成唯一ID /// snowflake算法 64 位 /// 0---0000000000 000 ...
- rcp(插件开发)插件B需要引用插件A中的jar包-如何处理依赖关系
如果插件B需要引用插件A中的jar 通常需要以下几步: 1.插件B要依赖插件A 2.在插件B的build path中添加插件A的jar包 3.插件A的runtime导出插件B中使用jar的packag ...
- Snmp学习总结(六)——linux下安装和配置SNMP
一.安装SNMP 1.1.下载Net-SNMP的源代码 选择一个SNMP版本,比如5.7.1,下载地址如下:http://sourceforge.net/projects/net-snmp/files ...
- 在ASP.NET MVC中实现区域或城市选择
每次在"万达影城"网上购票总会用到左上角选择城市的功能.如下: 今天就在ASP.NET MVC中实现一下.我想最好的方式应该是写一个插件,但自己在这方面的功力尚欠缺,如果大家在这方 ...
- AutoMapper在MVC中的运用02-Decimal转String、集合、子父类映射
本篇AutoMapper使用场景: ※ Decimal转换成String类型 ※ 源数组转换成目标数组 ※ 源中的集合(数组)属性转换成目标中的集合(数组)属性 ※ 子类父类间的映射 Decimal转 ...
- Android按键添加和处理的方案
Android按键添加和处理的方案 版本号 说明 作者 日期 1.0 Android按键添加和处理的方案 Sky Wang 2013/06/18 需求:Android机器上有个W ...
- ZServer4D开源项目
ZServer4D开源项目 ZServer4D 是一套从商业项目剥离而出的云服务器中间件,可以承载百万级的分布式负载服务,并且支持IoT及内网穿透. 作者将它开源了 https://github.co ...
- Spring Boot开发之明月千城(一)
原文地址:http://qindongliang.iteye.com/blog/2205633 最近数据分析的项目也即将告一段落了,中间也积累了很多知识,特此记录一下.其中用的最爽的Web组合开发就是 ...
- 微信破解,解密?How To Decrypt WeChat EnMicroMsg.db Database?
20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送) 国内私募机构九鼎控股打造,九鼎投资是在全国股 ...