17. 电话号码的字母组合

匿名 (未验证) 提交于 2019-12-03 00:27:02
class Solution {//回溯思想,一直Try,到头了再返回     public List<String> letterCombinations(String digits) {         StringBuilder sb = new StringBuilder(); 	List<String> res = new ArrayList<String>(); 	if(digits.length()==0||digits==null) 		return res;         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");         backtrack(digits,sb,map,res,0);//下标从零开始,对应‘2’的字符串         return res;     }     public static void backtrack(String digits,StringBuilder sb,Map<Character,String> map,List<String> res,int number){ 		if(sb.length()==digits.length()) { 			res.add(sb.toString()); 			return; 		} 		String ss=map.get(digits.charAt(number)); 		for(int i=0;i<ss.length();i++) { 			sb.append(ss.charAt(i)); 			backtrack(digits,sb,map,res,number+1); 			sb.deleteCharAt(sb.length() - 1);//这一步很容易写错,走完‘9’的W后,删除W,然后继续下一个X,依次类推层层返回。 		}     }//提交后一次AC }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!