全网传媒
最近刚刚学完数据结构,所以就来LeetCode做一下题目了,题目如下所示
![](https://i-blog.csdnimg.cn/blog_migrate/b4ad7969df94d341ad799e2191b3d4f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad27c9f3144b0651fba822c5305b23eb.png)
我利用了哈希表和递归实现了功能,具体代码如下
Java code?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package middle; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class 电话号码组合 { public static void main(String[] args) { String str = "273" ; List<String> list = letterCombinations(str); System.out.println(list); } public static List<String> letterCombinations(String digits) { List<String> list = new ArrayList<>(); Map<Character, String> map = new HashMap<Character, String>(); map.put( '2' , "abc" ); map.put( '3' , "def" ); map.put( '4' , "ghi" ); map.put( '5' , "jkl" ); map.put( '6' , "mno" ); map.put( '7' , "pqrs" ); map.put( '8' , "tuv" ); map.put( '9' , "wxyz" ); method(map, list, digits, "" ); return list; } /** * * @param map * 按键映射 * @param list * 最终链表 * @param s * 当前输入的数字字符 * @param result * 中转字符,起始为空字符 */ public static void method(Map<Character, String> map, List<String> list, String s, String result) { if (s == "" ) { return ; } String str = map.get(s.charAt( 0 )); for ( int i = 0 ; i < str.length(); i++) { String result2 = result + str.charAt(i); if (s.length() > 1 ) { method(map, list, s.substring( 1 ), result2); } else if (s.length() == 1 ) { list.add(result2); } } } } |
测试了一些例子都可以通过,但是提交的时候提示我执行错误,我不清楚具体错误在哪里
![](https://i-blog.csdnimg.cn/blog_migrate/668fd61bb587409c72143404ba4b23c4.png)
求路过的大佬花小小时间帮我看看,不胜感激!!!!!!!!!!![](https://i-blog.csdnimg.cn/blog_migrate/b651696a5fa635da879fa2400f264971.gif)