剑指offer例题——二维数组中的查找
//实现一个函数,将一个字符串的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution {
public String replaceSpace(StringBuffer str) {
String s = str.toString();
char[] s_1 = s.toCharArray();
StringBuffer out = new StringBuffer();
for (int i = 0;i<s_1.length;i++){
if (s_1[i] == ' ')
out.append("%20");
else
out.append(s_1[i]);
}
return out.toString();
}
}
因为自己还是一个菜菜,所以编代码的过程中参考了别人的思路,多谢大神,此外,还查阅了有关String,StringBuilder和StringBuffer三者的差别,转自高人的博客,自己又手打了一遍相关内容
链接为https://www.cnblogs.com/su-feng/p/6659064.html
自己的手打:
l Java中的String,StringBuilder,StringBuffer三者的区别
1. 运行速度方面
StringBuilder>StringBuffer>String
String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
例如:
String str = “abc”;
System.out.println(str);
Str = str + “de”;
System.out.println(str);
若运行该段程序,会先输出“abc”,然后又输出“abcde”,好像是str这个对象被修改了,其实,这只是假象,JVM对于这几行,是采取先创建一个String对象str,并赋值为“abc”,然后在第三行中,JVM又创建了一个新的对象也命名为str,然后再把原来的str值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)回收掉,所以,str实际上并木有被修改,即String对象一旦被创建后就是不可更改的。因为Java对String对象进行操作是一个不断创建新对象并将旧对象收回的过程,故执行过程很慢。
而StringBuffer和StringBuilder的对象是变量,对变量进行操作就是直接对该对象进行修改,而不进行创建和回收的操作,所以速度要比String快很多。
有时我们对字符串进行赋值
String str = “abc” + “de”;
StringBuilder stringBuilder = new StringBuilder().append(“abc”).append(“de”);
System.out.println(str);
System.out.println(StringBuilder.toString());
这样的输出结果都为“abcde”,但是String的速度要比StringBuilder的速度快,这是应为第一行中的操作和String str = “abcde”;是等效的,所以会很快。
2. 线程安全
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
StringBuffer在字符串缓冲区被多个线程使用时,很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法没有关键字,所以不能保证线程安全。但是单线程时还是建议用速度比较快的StringBuilder。
总结
String:适用于少量字符串操作情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况
剑指offer例题——二维数组中的查找的更多相关文章
- 剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
- 剑指 Offer 04. 二维数组中的查找 (思维)
剑指 Offer 04. 二维数组中的查找 题目链接 本题的解法是从矩阵的右上角开始寻找目标值. 根据矩阵的元素分布特性, 当目标值大于当前位置的值时将row行号++,因为此时目标值一定位于当前行的下 ...
- 《剑指offer》 二维数组中的查找
本题目是<剑指offer>中的题目 二维数组中的查找 题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
- 【Java】 剑指offer(3) 二维数组中的查找
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上 ...
- [剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
- 《剑指Offer 1.二维数组中的查找》2019-03-25
剑指Offer 第一题 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数 ...
- Go语言实现:【剑指offer】二维数组中的查找
该题目来源于牛客网<剑指offer>专题. 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一 ...
- 【剑指offer】二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 注意点:要注意特殊 ...
- 剑指Offer 1. 二维数组中的查找 (数组)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
随机推荐
- Jmeter(四十二)Jmeter工作原理
“千举万变,其道一也.不离于宗,谓之天人” ----<荀子·儒效>和<庄子·天下> 作为接口测试工具 Jmeter只是作为发起请求的客户端(可以理解为前端),Jmeter是作为 ...
- [UE4]Uniform Grid Panel
Uniform Grid Panel:统一大小网格 一.如果不设置子控件的Row和Column值,就跟Overlay容器一样的重叠. 二.选中Uniform Grid Panel,可以设置其内的子控件 ...
- 结合源码分析 bubble 使用注意事项
使用dubbo时候要尽量了解源码,不然会很容易入坑. 一.服务消费端ReferenceConfig需要自行缓存 ReferenceConfig实例是个很重的实例,每个ReferenceConfig实例 ...
- Java中的Html解析:使用jsoup
包:jsoup-1.10.2.jar import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import o ...
- WebView加载失败或网络异常时,替换WebView的错误界面;
WebView在加载失败时会显示一个失败原因的界面,各个手机显示的界面还都不一样,部分手机还会把Url显示出来:我们要做的就是统一加载失败的界面: 大概思路:在WebView这个控件上面再覆盖一个Vi ...
- String.prototype.normalize()
normalize() 方法会按照指定的一种 Unicode 正规形式将当前字符串正规化. 这是一个ES6方法. 许多欧洲语言有语调符号和重音符号.为了表示它们,Unicode 提供了两种方法.一种是 ...
- SOLR缓存调优
缓存在 Solr 中充当了一个非常重要的角色,Solr 中主要有这三种缓存: Filter cache(过滤器缓存),用于保存过滤器(fq 参数)和层面搜索的结果 Document cache(文档缓 ...
- SDOI2018IIIDX
/* 题目转换为 n个节点的一片森林,n个权值,要给每个节点分配一个权值,保证子节点的权值不小于父节点的权值,并且1~n的权值的字典序最大. 考场上的贪心很显然 建立出 树来 将所有数值从大到小排序 ...
- SpringBoot 实现前后端分离的跨域访问(CORS)
序言:跨域资源共享向来都是热门的需求,使用CORS可以帮助我们快速实现跨域访问,只需在服务端进行授权即可,无需在前端添加额外设置,比传统的JSONP跨域更安全和便捷. 一.基本介绍 简单来说,CORS ...
- 【死磕 Spring】—— IoC 之加载 BeanDefinition
本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处 http://cmsblogs.com/?p=2658 「小明哥」,谢谢! 作为「小明哥」的忠实读者,「老艿艿」略作修改,记录 ...