剑指Offer——替换空格
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
如果从前往后替换空格,那么每遇到一个空格就需要将还没遍历到的字符后移,总的移动步数将会很多。
所以我们考虑先求出替换空格之后的字符串的长度,再从后往前遍历进行替换,将会大大减少替换的次数,也不会覆盖还没遍历的字符。
代码:
class Solution {
public:
void replaceSpace(char *str, int length) {
int oldLength = strlen(str); // 没替换前的字符串长度
int newLength = oldLength;
for(int i = ; i < oldLength; i++) { // 求出替换空格后的字符串长度
if(str[i] == ' ')
newLength += ;
}
if(newLength > length) return; // 新长度超过限制的最长长度,则无法替换
while(oldLength >= && newLength > oldLength) { // 从后往前替换空格
if(str[oldLength] == ' ') {
str[newLength--] = '';
str[newLength--] = '';
str[newLength--] = '%';
oldLength--;
} else {
str[newLength--] = str[oldLength--];
}
}
}
};
剑指Offer——替换空格的更多相关文章
- 剑指Offer 替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路: 替换空格,先遍历一遍记 ...
- 剑指offer —— 替换空格
1.问题:请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 2.思路:可能首先想到的应该就是 ...
- 用js刷剑指offer(替换空格)
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 牛客网链接 js代码 func ...
- 剑指offer替换空格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串
[算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...
- 剑指offer——替换字符串
总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--: 替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% ...
- 剑指offer 替换字符串中的空格
void replaceSpace(char *str,int length) { ) return; ; ; ; while(str[originlen]!='\0') { if(str[origi ...
- 剑指Offer-2.替换空格(C++/Java)
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符 ...
- 剑指Offer_5_替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成"%20". 例如,当字符串为We Are Happy.则经过替换之后的字符串为 We%20Are%20Happy. 在网络编程 ...
随机推荐
- 匿名内部类 , Iterable<T> 和 Iterator<T>
package generic; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; i ...
- 【flink training】 打车热点区域实时统计PopularPlaces
http://training.data-artisans.com/是Apache Flink商业公司DataArtisans提供的一个flink学习平台,主要提供了一些业务场景和flink api结 ...
- MVVM 实战之计算器
MVVM 实战之计算器 android DataBinding MVVM calculator Model View 布局文件 Fragment ViewModel 结束语 前些日子,一直在学习基于 ...
- 元器件封装标准IPC-7351
IPC-7351依赖久经考验的数学算法,综合考虑制造.组装和元件容差,从而精确计算焊盘图形.该标准以IPC-SM-782研发概念为基础进一步提高,对每一个元件都建立了三个焊盘图形几何形状,对每一系列元 ...
- Squares - poj 2002(hash)
枚举两个点作为一条边,求出正方形的另外两个点,利用hash查找另外两个点. #include<stdio.h> #include<string.h> #include<s ...
- Python中如何将字符串作为变量名
应用场景描述: 通过配置文件获取服务器上配置的服务名及运行端口号,编写python脚本检测服务上服务是否在运行? #!/usr/bin/env python # -*- coding:utf-8 -* ...
- website 合集
1. oracle http://asktom.oracle.com ( 英文 ) http://itpub.net ( 中文 ) https://www.oracle.com/communitie ...
- 【转】【CTO俱乐部走进支付宝】探索支付宝背后的那些技术 部分
怎么避免研发环节当中引入漏洞?“我们有一套比较成熟的安全研发开发框架.首先我们用统一的框架,框架本身是经过我们安全工程师去做过非常好的认证的,同时在研发过程当中我们对这些问题也有些规范.一旦发现风险我 ...
- Collection接口与Iterator接口
Collection接口的实现类跟Vector相似.要从实现了Collection接口的类的实例中取出保存在其中的元素对象,必须通过Collection接口的Iterator()方法,返回一个Iter ...
- 【BZOJ】3314: [Usaco2013 Nov]Crowded Cows(单调队列)
http://www.lydsy.com/JudgeOnline/problem.php?id=3314 一眼就是维护一个距离为d的单调递减队列... 第一次写.....看了下别人的代码... 这一题 ...