给定一个10位数字的电话号码,我们必须打印由此创建的所有可能的字符串。数字的映射与电话键盘上的数字完全相同。

即1,0->无字母
对于2-> A,B,C

例如1230
助理总干事
BDG
CDG
AEG ...

在C / C++中解决此问题的最佳解决方案是什么?

最佳答案

我认为递归解决方案对此将是一件好事。所以像这样:

def PossibleWords(numberInput, cumulative, results):
    if len(numberInput) == 0:
        results.append(cumulative)
    else:
        num = numberInput[0]
        rest = numberInput[1:]
        possibilities = mapping[num]
        if len(possibilities) == 0:
            PossibleWords(rest, cumulative, results)
        else:
            for p in possibilities:
                PossibleWords(rest, cumulative + p, results)

result = []
PossibleWords('1243543', '', result)

10-01 09:44