分析題目,遞迴雖然簡單,但是消耗了額外的空間,故還是選擇遍歷的辦法。思路如下:
每一次新增乙個字母,把之前已經新增過的作為乙個整體,再和新新增的字母組合(注意刪去低維元素)。
class
solution
; list
result =
newarraylist
();if
(digits.
length()
==0)//處理第乙個數字
int cur = integer.
parseint
(digits.
substring(0
,1))
;for
(int i =
0; i < repository[cur -2]
.length()
; i++
)//處理遍歷之後的數字
for(
int i =
1; i < digits.
length()
; i++
) result.
set(j, result.
get(j)
+ repository[cur -2]
.substring(0
,1))
;//去掉低維組合}}
return result;
}}
以上**的執行結果:
執行時間
記憶體消耗
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...