回溯法:就是逐個情況進行問題規模縮小之後並逐漸遞迴解決,當達到遞迴基之後返回到當初進行的遞迴呼叫點繼續處理其他情況(每乙個情況處理完成之後需要進行狀態的重置)。
1 classsolution ,//26 ,//3
7 ,//4
8 ,
9 ,
10 ,
11 ,
12 //9
13 };
14
15 public listlettercombinations(string digits)
20 dfs(ans, new stringbuilder(), digits, 0);
21 returnans;
22 }
23 24
25
26 public void dfs(listans,stringbuilder an,string d,intindex)
32 // 『1』轉為1是減去48的,但是對於鍵盤對映二位陣列使用了index-2縮小陣列空間,因此減去50
33 int num = d.charat(index)-50;
34 // 單獨處理第乙個是為了stringbuilder長度加1,之後set即可
35 char letters =mtx[num];
37 dfs(ans,an,d,index+1);
38
39 for(int i=1,size=letters.length;i)
43 //刪除本次的計算狀態,還原到上一次的狀態繼續計算其他可能情況
44 an.delete(an.length()-1,an.length());
45 }
46
47 }
17 電話號碼的字母組合
給定乙個數字字串,返回數字所有可能表示的字母組合。下面給出數字到字母的對映 和 號碼一樣 輸入 數字字串 23 輸出 ad ae af bd be bf cd ce cf 思路1 採用迭代的方法。class solution if digits.empty return vector vectorr...
17 電話號碼的字母組合
1.遞迴 class solution object deflettercombinations self,digits type digits str rtype list str 建立字母對應的字元列表的字典 dic 儲存結果的陣列 ret str iflen digits 0 return 遞...
17 電話號碼的字母組合
給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。圖中顯示 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz 輸入 23 輸出 ad ae af bd be bf cd ce...