通过迭代方法
数组赋值的时候需要注意。
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits)==0:
return []
hashmap=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
alpha=[]
for i in digits:
alpha.append(hashmap[int(i)])
res=[]
result=[]
for i in range(len(alpha[0])):
res.append(alpha[0][i])
for item in alpha[1:]:
for t in item:
result+=[num+t for num in res]
#print(result)
res[:]=result[:]
result[:]=[]
#print(res)
return res递归的方法
其中将每一个数字对应的字母看成递归树的一层
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits)==0:
return []
hashmap=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
def dfs(i,path,result):
if i == len(digits):
result.append(path[:])
return
hashnode=hashmap[int(digits[i])]
for j in range(len(hashnode)):
dfs(i+1,path+hashnode[j],result)
result=[]
dfs(0,'',result)
return result队列的方法,初始化时将queue中放置一个空字符串,然后每次循环以队列的长度,因为那是上轮的结果的数量(数组长度)
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits)==0:
return []
hashmap=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
queue=['']
for i in range(len(digits)):
for _ in range(len(queue)):
s=queue[0]
queue[:]=queue[1:]
for j in hashmap[int(digits[i])]:
queue.append(s+j)
return queue这里放一个其他题解的方法,使用递归,也可以把digits对应的字母设置为数组形式,然后最后递归记录(返回)结果的时候,通过"".join()
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if not digits:
return list()
phoneMap = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz",
}
def backtrack(index: int):
if index == len(digits):
combinations.append("".join(combination))
else:
digit = digits[index]
for letter in phoneMap[digit]:
combination.append(letter)
backtrack(index + 1)
combination.pop()
combination = list()
combinations = list()
backtrack(0)
return combinations
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/dian-hua-hao-ma-de-zi-mu-zu-he-by-leetcode-solutio/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
京公网安备 11010502036488号