以23
為例,2
代表abc
,只需要將其轉換成lists = [a,b,c]
,然後處理3
,3
為def
,將這三個字元分別加到s
的每乙個元素中,得到["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
。重複此過程即可。
上述思路可以用迴圈完成,同時python提供的reduce函式和生成式特性能夠精煉地表述,下面給出兩種**。
class solution(object):
def lettercombinations(self, digits):
""":type digits: str
:rtype: list[str]
"""from functools import reduce #python3.x
if not digits:
return
nums = '0 1 abc def ghi jkl mno pqrs tuv wxyz'.split(' ')
return reduce(lambda last, d: [x + y for x in last for y in nums[int(d)]], digits, ['']) # 第三個引數是initial
#使用迴圈完成
def lettercombinations_old(self, digits):
if not digits:
return
nums = '0 1 abc def ghi jkl mno pqrs tuv wxyz'.split(' ')
ret = [_ for _ in nums[int(digits[0])]]
digits = digits[1:]
while digits:
ret = [x + y for x in ret for y in nums[int(digits[0])]]
digits = digits[1:]
return ret
python 鍵盤輸入數字 九宮格鍵盤輸入
九宮格鍵盤輸入 letter combinations of a phone number 給定乙個數字字串,返回數字可能代表的所有可能的字母組合。數字到字母的對映 就像九宮格 按鈕一樣 如下圖。given a digit string,return all possible letter comb...
手機九宮格鍵盤
按照手機鍵盤輸入字母的方式,計算所花費的時間 如 a,b,c都在 1 鍵上,輸入a只需要按一次,輸入c需要連續按三次。如果連續兩個字元不在同乙個按鍵上,則可直接按,如 ad需要按兩下,kz需要按6下 如果連續兩字元在同乙個按鍵上,則兩個按鍵之間需要等一段時間,如ac,在按了a 之後,需要等一會兒才能...
九宮格布局
2009 08 25 15 15 27 九宮格是一種比較古老的設計,它最基本的表現其實就像是乙個三行三列的 其實它最初是在window的c s結構中用得比較多,比如我們經常看 到軟體中的乙個窗體,其實就是乙個九宮格的典型應用,因為窗體需要在八個方向拉伸,所以在c s軟體中大量採用這種技術來布局設計。...