**
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的值分析越界的情況)