“工欲善其事,必先利其器”——题记
最近用JAVA语言刷PAT 和leetcode上的算法题目,其间遇到了很多问题,有些在我们做项目时不容易被发现,但是在刷算法题目时,一些bug往往出自其中且不易发现。选择不当时会很大程度上影响算法的时间复杂度。故而想总结一类这样的篇目,以便于对日后的算法、代码设计不断优化提高。
我们先从一些基本的谈起:
一、关于字符串、字符的处理
String 转char
1.将单个字符由char转为String:
String s="acv";
char c=s.charAt(index);//此处index为你想转的单个字符在字符串 s 中的下标
2.将整个字符串转为字符数组char [ ]:
String s="acv";
char c[ ]=s.toCharArray();
char转为String
1.单个字符的转换
法一:String s=String.valueOf('c');
法二:String s=Character.toString('c');
法三:String s=""+'c';
2.多个字符一次性转为String字符串
如目前有一个字符数组 char c[ ]={'a', 'c', 'v'};
法一:String s=new String( c );
法二:String s=String.valueOf ( c );
int (或int [ ])和String的互转
这里可以把int类型看作char 类型,和上述 char和String 的转换一样
二、用Scanner类获取单个字符
java语言中没有这个方法,但我们可以这样操作:
三、String中关于next() 和nextLine() 的区别和用法:
1、String 中next() 查找并返回来自此扫描器的下一个完整标记, 获取一个字符串
在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉。只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符。所以next()方法不能得到带空格的字符串。next()获取第一个空格前数据。next()见到回车也会结束。
注意:next() 和 nextInt()、nextDouble()、nextFloat()等都是如上述一样的用法
2.nextLine() 此扫描器执行当前行,并返回跳过的输入信息,获取一行数,见到回车就结束,可获得包含空格在内的字符。
它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的。
3.两者使用顺序不一样时会产生不同的效果:
(1)next() 在nextLine之前:
案例一:
在输入了 123后,我又输入了空格和56,因此,k是12,s 是空格和56
案例二:
在输入了123后,打了回车,这时会发现一个奇怪的现象:还为来得及输入(即执行第13行代码:输入一行字符串),便已经打印出了结果。
其实是因为此处的String 类 s 获取了123后面的回车符,并且因为nextLine()见到回车结束,所以产生了以上的结果。
为解决这个问题,我们可以这样做:
只需在next()类的方法后加上一个:String s=sc.nextLine(); 将回车符消耗掉,如下:
(2)nextLine () 在前,next() 类在后是不会出现上述问题的
(3)nextLine() 和 nextLine() 之间不会出现上述问题
四、数字字符串转为int、float、double等数字类型
1.转int
String s="123";
int n=Integer.parseInt(s);
2.转float
String s="1.23";
float n=Float.parseFloat(s);
3.转double
double n=Double.parseDouble(s);
五、StringBuilder、StringBuffer在算法中常用的方法
当对字符串进行修改时,需要使用StringBuilder 和StringBuffer类。
这两个类和String 不同之处在于,它们能够被多次修改。
1.StringBuilder 类非线程安全,不可同步访问。但有速度又是,所以如果不考虑线程安全问题,建议用StringBuilder
2.StringBuffer是线程安全的,但相对较慢。
3.StringBuilder 中常用方法:
(1)append(String s)或 append(char c) //进行字符串的连接
(2)toString() //返回一个与构建器或者缓冲器内容相同的字符串
这里说的比较抽象,具体来一个经典算法的应用,请移步——
https://blog.csdn.net/weixin_43156201/article/details/104116141
(张楠)南城慕云深 发布了12 篇原创文章 · 获赞 11 · 访问量 595 私信 关注