剑指offer:替换空格 java版
来源:互联网 发布:如何看端口通不通 编辑:程序博客网 时间:2024/06/05 19:22
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。
书中给出了C++版本的解答,而在java中,题目是否依然有存在的意义。每个算法我们需要考虑的都是时间和空间两个方面的优化,这个题目在C++中的解法,肯定是无需重新分配地址空间的,直接在原空间进行字符的移动即可。而在java中是否也如此呢?
首先我们必须要先了解java中封装好的可以表示字符串的三种不同的类String,StringBuffer,StringBuilder
三者的所有区别,大家可以去网上搜,在这里重点讲的就是String不同于其他二者的“不可变性”。
我们通常使用下面这种方式给String类“赋值”:String s = "We are happy"
很多人存在一个误区,以为s就是String的一个对象了,其实,s只是一个String对象的引用,并不是对象本身。引用指向了对象在内存中的地址空间,如果对引用重新赋值,则指向的地址空间发生改变,对象也随即发生了改变。
String s = "We are happy"
s = "We%20are%20happy."
而String类本身可以直接调用的一些字符串操作函数,也都是通过新建另外一个对象来实现的,所以在空间上远远是不符合题目的要求的。但基于String类本身这种不可变的性质,我们也无法对其字符所在空间进行一系列插入和移动操作,故该题目我们只能考虑StringBuffer和StringBuilder来实现,而考虑到StringBuilder是线程不安全的,所以我们用StringBuffer来实现。具体代码如下:
- public String replaceSpace(StringBuffer str) {
- for(int k=0; k<str.length(); k++)
- {
- char index = str.charAt(k);
- if(index == ' ')
- {
- str.replace(k, k+1, "%20");
- }
- }
- return str.toString();
- }
- 【剑指offer-Java版】04替换空格
- 剑指offer-----替换空格(java版)
- 剑指offer:替换空格 java版
- 剑指offer:替换空格(java)
- 剑指Offer面试题4(Java版),替换空格
- 剑指Offer面试题4(Java版):替换空格
- 剑指offer 面试题4 替换空格 java版答案
- 剑指offer 替换空格 java实现
- JAVA实现替换空格(《剑指offer》)
- 剑指offer题解【替换空格】-java
- 《剑指offer》004-替换空格(java实现)
- 《剑指offer》004-替换空格(java实现)
- 《剑指offer》牛客网java题解-替换空格
- 剑指offer之空格替换java
- 剑指offer--替换空格(java)
- 剑指offer-替换空格(java语言)
- [剑指offer]替换空格
- [剑指offer]替换空格
- 如何在虚拟机上安装linux系统
- Mybatis框架学习总结--1如何搭建
- 浅谈CSRF攻击
- API-集合框架(5)-Map
- ubuntu adb unautorized的解决办法
- 剑指offer:替换空格 java版
- python scikit-image
- 前端布局引擎bshow
- [bzoj3790]神奇项链 manacher
- JVM 运行时数据区域
- getBytes等空指针异常
- 动态规划
- 读Qt示例之addressbook(一)
- CSS:标准文档流、浮动、绝对定位—(解决有时候父元素不能自动扩展)