问题描述:
依旧是组合问题,不过之前是一个集合,这里是多个集合。
用一个哈希表存储数字和字母的对应关系。
mp={"0":"","1":"","2":"abc","3":"def","4":"ghi","5":"jkl","6":"mno","7":"pqrs","8":"tuv","9":"wxyz"}
#电话号码字母组合
import sys
sys.setrecursionlimit(1000000)
def f(s): #:"23"
res=[]
path=[]
n=len(s)
mp={"0":"","1":"","2":"abc","3":"def","4":"ghi","5":"jkl","6":"mno","7":"pqrs","8":"tuv","9":"wxyz"}
def dfs(idx): #遍历到s的第几个数字
if idx==n: #超过了数字最大索引,就收集结果
res.append("".join(path[:]))
return
for i in range(len(mp[s[idx]])):
ch=mp[s[idx]][i]
path.append(ch)
dfs(idx+1)
path.pop()
dfs(0)
print(res)
return
def main():
s=input().strip()
f(s)
if __name__=="__main__":
main()