剑指Offer4:替换空格
来源:互联网 发布:五笔for mac 编辑:程序博客网 时间:2024/06/10 01:52
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
实现
网络编程中,URL参数中的特殊字符需要转换为服务器可以识别的字符。转换的规则是‘%’后面跟上ASCII码的两位16进制的表示。
空格: %20
#号 :%23
public class Solution { public String replaceSpace(StringBuffer str) { int count = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') count++; } int oldLength = str.length(); int newLength = str.length() + 2 * count; str.setLength(newLength); for (int i = oldLength - 1; i >= 0; i--) { if (' ' == str.charAt(i)) { str.setCharAt(newLength - 1, '0'); str.setCharAt(newLength - 2, '2'); str.setCharAt(newLength - 3, '%'); newLength -= 3; } else{ str.setCharAt(newLength - 1, str.charAt(i)); newLength--; } } return str.toString(); }}
特别留神:每次往后插入时,需要对newLength进行相应的操作!!
此种解法时间复杂度和空间复杂度很好。
另解
下面的解法肯定不能是本题的正确考察目的。但可以借以熟悉万能的“\\s”的使用!!
public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().replaceAll("\\s", "%20");}
小结
本题特别注意StringBuffer的用法
获取长度: length()
获取某位置字符: charAt()
设置某位置字符:setCharAt()
添加:append()
删除:delete(4, 10) [ 4, 10)
插入字符串:insert(4, “there”)
反转:reverse()从后往前是一种很重要的思想,减少移动次数,提高效率。
0 0
- 剑指Offer4 替换空格
- 剑指Offer4:替换空格
- 剑指offer4
- offer4
- 剑指offer4 重建二叉树
- [剑指offer]替换空格
- [剑指offer]替换空格
- 剑指offer:替换空格
- 替换空格--《剑指offer》
- 剑指Offer:替换空格
- 【剑指offer】替换空格
- 《剑指Offer》--替换空格
- 剑指offer--替换空格
- 【剑指offer】替换空格
- 【剑指offer】空格替换
- 剑指offer-替换空格
- 剑指offer:替换空格
- [剑指offer]替换空格
- 浅谈css中浮动和清除浮动带来的影响
- JVM入门
- 编程题
- 构建二叉树的两种方式(前+中) (中+后),递归
- CoordinatorLayout的使用
- 剑指Offer4:替换空格
- 如何在腾讯云上开发一款O2O书签?
- 数据结构--基本数据结构
- 第七届蓝桥杯b组第四题-快速排序
- jaxb 序列化与反序列化是遇到的问题
- oracle创建用户
- jquery 常规绑定事件click与on委托绑定测试
- DedeCMS模板修改方法
- 解决AndroidStudio更新后在 Building gradle project info 一直卡住