1、题目如下:
2、个人Python代码实现:
还是先记录一下思路,首先这种类型的题,需要自定义一个字典对应题目中的电话号码和数字。其次,个人的思路是,先读取字符串第一个字符(digits[0]),遍历digits[0] 在字典中对应的值并加入数组res,然后在遍历digits[1:]的数组时候跟第一次遍历是有区别的。举例digits = ‘2345’:
1、digits[0]也就是2,2在电话号码里面对应“abc”,遍历“abc”加入数组res,这时候res=[a,b,c]
2、digits[1]也就是3,3在电话号码里面对应“def”,这个时候是res里面的每个元素都需要和def的每个字符进行拼接(换句话说,就是a分别和d、e、f拼接、b分别和d、e、f拼接,c分别和d、e、f拼接),最后加入到res里面。所以我们采用了临时变量temp的方式进行实现
3、digits[2]、digits[3]的实现方式也跟第二条保持一致
个人调试代码如下(Pythoncharm复制过来没有缩进手动按的缩进,如果代码有问题,请参照下图调整对齐):
dic = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz"
}
s = ["23", "", "2", "9876"]
for digits in s:
res = []
while digits:
char = dic[digits[0]]
if not res:
for i in char:
res.append(i)
else:
temp = res
res = []
for i in char:
for str in temp:
res.append(str + i)
digits = digits[1:]
res.sort()
print("输出为:{0}".format(res))
print("输出长度为:{0}".format(len(res)))