这道题综合来讲不是很难,主要是做一个2-9与对应字母的一个映射,于是创建一个l列表将对应的字母存储在里面(前两个放的是0,方便索引)
这道题第二个要点在于对digits长度的判断,方便进行不同层数的for循环来对所有字符进行遍历,需注意,最内层的for循环需对临时储存字符串ss清空,将其放入到存储的列表中后continue,以便进行所有字符串的遍历,代码如下:
class Solution(object):
def letterCombinations(self, digits):
l = [['0'],['0'],['a','b','c'],['d','e','f'],['g','h','i'],['j','k','l'],['m','n','o'],['p','q','r','s'],['t','u','v'],['w','x','y','z']]
les = len(digits)
m = []
if les == 1:
ii = int(digits[0])
return l[ii]
elif les == 2:
ii = int(digits[0])
jj = int(digits[1])
ss = ''
for i in l[ii]:
for j in l[jj]:
ss += i
ss += j
m.append(ss)
ss = ''
continue
elif les == 3:
ii = int(digits[0])
jj = int(digits[1])
pp = int(digits[2])
ss = ''
for i in l[ii]:
for j in l[jj]:
for p in l[pp]:
ss += i
ss += j
ss += p
m.append(ss)
ss = ''
continue
elif les == 4:
ii = int(digits[0])
jj = int(digits[1])
pp = int(digits[2])
qq = int(digits[3])
ss = ''
for i in l[ii]:
for j in l[jj]:
for p in l[pp]:
for q in l[qq]:
ss += i
ss += j
ss += p
ss += q
m.append(ss)
ss = ''
continue
return m