剑指offer —— 替换空格
1.问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2.思路:可能首先想到的应该就是 str.replaceAll("\\s", "%20"),在工作当中肯定可以这样写,但是如果是面试的话,主要考的是编程能力,而不是熟悉API的程度;
一种想法是在原有的字符串进行替换,但是只适用于在替换字符的长度和被替换字符长度一致时,才可以使用;
另一种想法是在 先计算替换之后字符串的长度,再新建一个字符串,用来存放替换之后的字符串,这里采用这种方式;
3.代码:
①:不使用 StringBuilder 和 StringBuffer
public String replaceSpace(String s) {
//1.判断有多少空格
int spaceNum = 0;
for(int i = 0 ; i < s.length();i++){
if(s.charAt(i) == ' '){
spaceNum++;
}
} if(spaceNum != 0){
//2.需要的长度
int newLen = s.length() + 2 * spaceNum;
char[] newChars = new char[newLen];
int position = 0; //3.开始替换
for(int i = 0 ; i < s.length() ; i++){
if(s.charAt(i) == ' '){
newChars[position++] = '%';
newChars[position++] = '2';
newChars[position++] = '0';
}else{
newChars[position++] = s.charAt(i);
}
} s = new String(newChars);
} return s;
}
②使用 StringBuffer
public String replaceSpace(StringBuffer str) { //1.判断有多少空格
int spaceNum = 0 ;
for(int i = 0 ; i < str.length();i++){
if(str.charAt(i) == ' '){
spaceNum++;
}
} if(spaceNum != 0){
//2.需要的长度
int oldLen = str.length();
int newLen = oldLen + 2 * spaceNum;
str.setLength(newLen);
int position = newLen - 1; //3.开始替换,从后往前移动,每次则只移动一个字符
for(int i = oldLen - 1 ; i >= 0 ; i-- ){
if(str.charAt(i) == ' '){
str.setCharAt(position-- , '0');
str.setCharAt(position-- , '2');
str.setCharAt(position-- , '%');
}else{
str.setCharAt(position-- , str.charAt(i));
}
}
} return str.toString();
}
③使用 StringBuilder
public String replaceSpace(StringBuffer str) {
if(str == null){
return null;
}
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < str.length();i++){
if(str.charAt(i) == ' '){
sb.append('%');
sb.append('2');
sb.append('0');
}else{
sb.append(str.charAt(i));
}
}
return sb.toString();
}
剑指offer —— 替换空格的更多相关文章
- 剑指Offer 替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路: 替换空格,先遍历一遍记 ...
- 剑指Offer——替换空格
题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 如果从前往后替换空格,那 ...
- 用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. 在网络编程 ...
随机推荐
- redmine2.3环境搭建
1. 安装redmine bitnami-redmine-2.3.0-0-windows-installer.exe安装到C:\BitNami\redmine-2.3.0-0目录下. 其中redmin ...
- 11-09SQLserver 基础-数据库之汇总练习45题
设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表 ...
- bash: telnet: command not found
//安装telnet服务 yum -y install telnet-server //安装telnet客户端 yum -y install telnet.*
- python爬虫框架(1)--框架概述
框架概述 其中比较好用的是 Scrapy 和PySpider.pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面.S ...
- if __name__ == "__main__": 的使用
#!/usr/bin/env python from qq.lib.a2 import register from qq.lib.a3 import login def main(): while T ...
- 使用Javascript Ajax 通信操作JSON数据 [上]
以前只是知道json的格式而已,也做过的是从数据库获得数据然后弄成json的格式然后赋给HighCharts生成曲线,先把数据库的数据使用array()函数转换成数组,然后使用json_encode( ...
- 外部访问docker内部容器centos的http服务
1.创建容器 docker run -d -it -h dd -p --name bbbbb centos dd 是用户名 --name 后面是容器名字 2.在我们开始安装Nginx及其他所需软件之前 ...
- JAVA面向接口的编程思想与具体实现
面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的. 问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了 ...
- 7-n!末尾有几个0
如何确定一个N!末尾有多少个零 转载 2015年08月30日 15:02:49 622 题目:1*2*3*……*100 求结果末尾有多少个零 分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾 ...
- python struct.pack中的对齐字节问题
最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00") print repr(buff) 输 ...