+10 投票
分类:编码思路 | 用户: 9 4 3 (2.5k 分)
修改于 用户:
【问题描述】

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合(字母均小写)。

给出数字到字母的映射如下(与电话按键相同,2可以表示字母a,b,c;3可以表示字母d,e,f;以此类推。0和1不对应任何字母,也不会出现在输入字符串中)。

【输入形式】

只包含数字2-9的字符串,字符串长度大于等于1,小于等于4

【输出形式】

由空格分割的按字母表顺序排列的若干英文字符串(最后有空格)

【样例输入】

23

【样例输出】

ad ae af bd be bf cd ce cf

#九键输入

def letterCombinations(digits):

    if not digits:

        return []

    phone = {

        '2':['a', 'b','c'],'3':['d','e','f'],

        '4':['g','h','i'],'5':['j','k','l'],

        '6':['m','n','o'],'7':['p','q','r','s'],

        '8':['t','u','v'],'9':['w','x','y','z']}

    def cal(combations, digit):

        if len(digit) == 0:

            res.append(combations)

        else:

            for item in phone[digit[0]]:

                cal(combations+item,digit[1:])

    res = []

    cal('',digits)

    return  res

number = input()

comb = letterCombinations(number)

sorted(comb)

if not comb:

    print('NULL')

else:

    for i in comb:

        print(i,end=' ')

4 个回答

0 投票
用户: 7 3 2 (700 分)
info = input()
a = int(info[0])
b = int(info[1])
dic = {2:['a','b','c'],3:['d','e','f'],4:['g','h','i'],
       5:['j','k','l'],6:['m','n','o'],7:['p','q','r','s'],
       8:['t','w','v'],9:['u','x','y','z']}

for c in dic.keys():
    if a == c:
        chars_1 = dic[c]
    if b == c:
        chars_2 = dic[c]

for char_1 in chars_1:
    for char_2 in chars_2:
        print(char_1 + char_2)
用户: 6 3 1 (430 分)
这个只能针对输入两个数的情况吧
+2 投票
用户: 6 3 1 (430 分)
重新显示 用户:
keyboard={"2":["a","b","c"],"3":["d","e","f"],"4":["g","h","i"]
          ,"5":["j","k","l"],"6":["m","n","o"],
          "7":["p","q","r","s"],"8":["t","u","v"],
          "9":["w","x","y","z"]}
nums = input("请输入数组")
n = len(nums)
m = []
for i in range(n):
    m.append(keyboard[nums[i]])
for i in range(0,n-1):
    gg = []
    for x in m[i]:
        for y in m[i+1]:
            comb = x+y
            gg.append(comb)
    m[i+1] = gg
for v in m[-1]:
    print(v,end=" ")
用户: 7 3 2 (700 分)
嗯嗯,还得是你
用户: 4 1 1 (280 分)
请问keyboard是什么函数呀
用户: 6 3 1 (430 分)
keyboard是我定义的一个字典,我的这个算法里是直接迭代
0 投票
用户: 7 4 (1.2k 分)
import re
def list_mutipy(list1, list2):
    list_muti = []
    for i in list1:
        for j in list2:
            list_muti.append(i+j)
    return list_muti
def main():
    pattern = r'(\d)'
    number_string = input()
    matches = re.findall(pattern, number_string)
    number_string = matches.copy()
    phone = {

        '2': ['a', 'b', 'c'], '3': ['d', 'e', 'f'],

        '4': ['g', 'h', 'i'], '5': ['j', 'k', 'l'],

        '6': ['m', 'n', 'o'], '7': ['p', 'q', 'r', 's'],

        '8': ['t', 'u', 'v'], '9': ['w', 'x', 'y', 'z']}
    number_map = map(lambda x:phone[x],number_string)
    str_list = list(number_map)
    list_muti = str_list[0].copy()
    for n in range(len(str_list)-1):
        if list_muti != str_list[n+1]:
            list_muti = list_mutipy(list_muti, str_list[n+1])
    print(list_muti)
main()
0 投票
用户: 5 1 (530 分)
dictionary={'2':['a','b','c'],'3':['d','e','f'],

            '4':['g','h','i'],'5':['j','k','l'],

            '6':['m','n','o'],'7':['p','q','r','s'],

            '8':['t','u','v'],'9':['w','x','y','z']}

numbers=list(input())

n=len(numbers)

if n==1:

    for i in range(len(dictionary[numbers[0]])):

        print(dictionary[numbers[0]][i],end=' ')

elif n==2:    

    for i in range(len(dictionary[numbers[0]])):

        for j in range(len(dictionary[numbers[1]])):

            print(dictionary[numbers[0]][i]+dictionary[numbers[1]][j],end=' ')

elif n==3:

    for i in range(len(dictionary[numbers[0]])):

        for j in range(len(dictionary[numbers[1]])):

            for k in range(len(dictionary[numbers[2]])):

                print(dictionary[numbers[0]][i]+dictionary[numbers[1]][j]+dictionary[numbers[2]][k],end=' ')

elif n==4:

    for i in range(len(dictionary[numbers[0]])):

        for j in range(len(dictionary[numbers[1]])):

            for k in range(len(dictionary[numbers[2]])):

                for l in range(len(dictionary[numbers[3]])):

                    print(dictionary[numbers[0]][i]+dictionary[numbers[1]]\n                  [j]+dictionary[numbers[2]][k]+dictionary[numbers[3]][l],end=' ')
欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...