這題做法很簡單,
使用遞迴的方式,將目前所有的組合上加上下一個數字可能產生的所有字元
舉例來說
input: 23
result 代表所有可能的組合,一開始為空 <== result=[]
看到第一個數字為2,可能得字元為a/b/c, 由於result=[],所以將a/b/c放入result內
result=[a,b,c]
再來看到下一個數字為3,可能的字元為d/e/f,由於result!=[],因此將其內容與d/e/f做結合
a-> ad,ae,af
b->bd,be,bf
c->cd,ce,cf
result=[ad,ae,af,bd,be,bf,cd,ce,cf]
由於input已經處理完,目前的result即為所有可能的排列組合
結果執行時間32ms, 超過100%的提交
source code:
https://github.com/cy-arduino/leetcode/blob/master/17.%20Letter%20Combinations%20of%20a%20Phone%20Number.py
使用遞迴的方式,將目前所有的組合上加上下一個數字可能產生的所有字元
舉例來說
input: 23
result 代表所有可能的組合,一開始為空 <== result=[]
看到第一個數字為2,可能得字元為a/b/c, 由於result=[],所以將a/b/c放入result內
result=[a,b,c]
再來看到下一個數字為3,可能的字元為d/e/f,由於result!=[],因此將其內容與d/e/f做結合
a-> ad,ae,af
b->bd,be,bf
c->cd,ce,cf
result=[ad,ae,af,bd,be,bf,cd,ce,cf]
由於input已經處理完,目前的result即為所有可能的排列組合
結果執行時間32ms, 超過100%的提交
source code:
https://github.com/cy-arduino/leetcode/blob/master/17.%20Letter%20Combinations%20of%20a%20Phone%20Number.py
沒有留言:
張貼留言