怎样建设的网站好优化好排名,免费招商加盟代理,公众号的微网站怎么做的,凡客建站登陆题目链接
leetcode在线oj题——电话号码的字母组合
题目描述
给定一个仅包含数字 2-9 的字符串#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下#xff08;与电话按键相同#xff09;。注意 1 不对应任何字母。 题目示例…题目链接
leetcode在线oj题——电话号码的字母组合
题目描述
给定一个仅包含数字 2-9 的字符串返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下与电话按键相同。注意 1 不对应任何字母。 题目示例
示例 1: 输入digits “23” 输出[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2 输入digits “” 输出[]
示例 3 输入digits “2” 输出[“a”,“b”,“c”]
题目提示
0 digits.length 4digits[i] 是范围 [‘2’, ‘9’] 的一个数字。
解题思路
首先将电话键盘上的按键数和对应的字母用HashMap存储起来
使用深度优先搜索的思想
定义一个List String 类型的result用来存储结果 定义DFS方法参数分别为digitsresult和当前阶段形成的curStr当前遍历到的下标digitIndex和hashmap
当当前位置下标digitIndex和digits的长度相等说明已经遍历到了最后一个位置那么就在result中添加curStr
用数字从hashmap中取出对应的字符串遍历这个字符串的每个位置 DFS再次递归传入curstr加对应位置的字符方便回溯digitIndex 1方便回溯
最终返回result即可
代码
class Solution {public void DFS(String digits, ListString result, String curStr,int digitIndex, HashMapCharacter, String hashMap){if(digitIndex digits.length()){result.add(curStr);return;}//获取数字对应的字符集String strMap hashMap.get(digits.charAt(digitIndex));for (int i 0; i strMap.length(); i) {char ch strMap.charAt(i);DFS(digits, result, curStr ch, digitIndex 1, hashMap);}}public ListString letterCombinations(String digits) {HashMapCharacter, String hashMap new HashMap();hashMap.put(2, abc);hashMap.put(3, def);hashMap.put(4, ghi);hashMap.put(5, jkl);hashMap.put(6, mno);hashMap.put(7, pqrs);hashMap.put(8, tuv);hashMap.put(9, wxyz);ListString result new ArrayList();if(digits.length() 0){return result;}DFS(digits, result, , 0, hashMap);return result;}
}