当前位置: 首页 > 后端技术 > Python

力扣-0017.电话号码的字母组合【Python】

时间:2023-03-26 16:26:38 Python

LeetCode0017.电话号码的字母组合【中】【Python】【回溯】【DFS】【暴力】问题LeetCode给定一个包含2-9(含)数字的字符串,返回该数字可以表示的所有可能的字母组合。下面给出了数字到字母的映射(就像在电话按钮上一样)。请注意,1不映射到任何字母。示例:输入:“23”输出:[“ad”、“ae”、“af”、“bd”、“be”、“bf”、“cd”、“ce”、“cf”]。注:虽然以上答案是按字典顺序排列的,您的答案可以按您想要的任何顺序排列。给定一个只包含数字2-9的字符串,返回它可以表示的所有字母组合。数字到字母的映射如下(与电话键相同)。请注意,1不对应任何字母。示例:输入:“23”输出:[“ad”、“ae”、“af”、“bd”、“be”、“bf”、“cd”、“ce”、“cf”]。说明:虽然上面的答案是按字典顺序排序的,但是你可以选择任意的答案输出顺序。思路一回溯DFS注意判断路径!='',因为digits=''时返回的是[]而不是['']。Python3代码类解决方案:defletterCombinations(self,digits:str)->List[str]:#解决方案一:回溯kbmaps={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}ans=[]self.dfs(digits,0,ans,'',kbmaps)返回ansdefdfs(self,string,index,ans,path,kbmaps):ifindex==len(string):ifpath!='':#whiledigits='',return[]not['']ans.append(path)returnforiinkbmaps[string[index]]:self.dfs(string,index+1,ans,path+i,kbmaps)解法二暴力Python3代码类解决方案:defletterCombinations(self,digits:str)->List[str]:#解决方案二:暴力搜索ifdigits=="":return[]d={'2':"abc",'3':“def”,'4':“ghi”,'5':“jkl”,'6':“mno”,'7':“pqrs”,'8':“tuv”,'9':"wxyz"}ans=['']forxindigits:ans=[y+cforcind[x]foryinans]返回ans代码地址GitHub链接