**
3.26
**
一、关于java随机数
算法机试的时候可以使用Random吗
import java.util.Random;
rnd.nextInt(22)+5 设置随机数的范围在5到26之间
rnd.nextInt(max-min)+min 设置随机数的范围在min到max之间
Math.random()*(n-m)+m
二、关于去除数组中重复的数
利用Hashset去除重复的数
三、各类排序算法
分治法、快排法
四、分治法复习(分治法与递归思想)分治法天然与递归结合在一起
小和问题、分治法排序、逆序对问题
递归:边界条件+递归方程
(阶乘、裴波那契数列)
遍历的时候传参数(一个数的时候、一个数组的时候(传入数组名,数组的起始和终点))
五、回溯法
六、关于java设置全局变量
可以使用static设置
七、动态规划问题
八、复习一下java的字符串操作函数
split函数//split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;
数组的length属性与字符串求长度length()方法有本质区别
将一个字符串中只有一个字符,可以通过charAt获取指定的字符,有char就返回char
toUpper()函数
‘A’ = ‘a’ - 32?
char ch = 'a';
char ch1 = (char) (ch - 32);
**
3.27
**
Java字符串之练习
charAt() 参数、返回值类型,判断回文数
indexOf() 指定从哪个字符开始以后
length()
startsWith()
endsWith()
substring()
toUpperCase()
toLowerCase()
trim()
String.valueOf(int/float/char) //将其他类型转换为字符串类型
split(String regex)
concat()
字符串类型与其他类型互转
parseInt parseDouble
字符串与字符转换
字符转为字符串 String.valueOf
字符串转为字符 toCharArray(先转为字符数组,在取得第一个元素) charAt(直接获取第一个字符)
正则表达式
replace函数 用(oldchar,newchar)
replaceAll(regex, replacement)
去除字符串中的字母或者数字
\w,与[a-zA-Z0-9_]等价
[0-9]
[a-zA-Z]
新建一个字符串数组,不赋初值,那么每个字符串都为null
新建一个字符串,不赋初值,那么每个字符串为空字符串
新建一个整形数组,不赋初值,那么每个变量为0
Scanner类中没有定义读取char的方法,所以只能先读取string然后再转化为char。具体方法next().charAt(0)。
java读取一个二维字符数组
char[][] chs = new char[13][13];
for(int i = 0;i < chs.length; i++) {
chs[i] = sc.next().toCharArray();
}
布尔数组的默认值是false
回溯法(回溯法与深度优先搜索策略)
求全排列
李白打酒
枚举法:有序的去尝试每一种可能
一些写算法的思想:
想一直做某个动作时,可以想到while,while判断条件填终止程序的条件
常见字符的ascii码
**
3.28
**
一、统计一个字符串中每个字符出现的次数
StringBuffer可以通过toString方法转换成String
将字符的数字转为数字 ch-‘0’
小贴士: 字符的ASCII码
space 32
0 48
9 57
A 65
Z 90
a 97
z 122
space 到 z 的范围为122
0 到 z 的范围为 122
数据结构:HashMap,键值对的形式
import java.util.HashMap
put(key,value)放入键和值
get(key) 通过key获得值
如何遍历map获得key、value
通过entrySet可以直接将key和value取出
list是有序集合,set是无序集合,所以list可以用sort方法排序
二、从文件读入字符
三、今日写递归
注意递归的判断结束条件的顺序
注意结束时的return,否则可能会有数组越界的可能(检查:可以通过打印step的值分析越界的情况)