给定一个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)