Leecode 17. 电话号码的字母组合
class Solution {
// 感觉做这个题substring 方法要清楚些才好啊
// String ss = "012";
// String lll = ss.substring(3); 可以为3 ,可以为length ,再大应该就不行l
// String lll = ss.substring(3);
private Map<String,String> phoneMap = new HashMap<>();
private List<String> result = new ArrayList<>();
public List<String> letterCombinations(String digits){
phoneMap.put("2", "abc");
phoneMap.put("3", "def");
phoneMap.put("4", "ghi");
phoneMap.put("5", "jkl");
phoneMap.put("6", "mno");
phoneMap.put("7", "pqrs");
phoneMap.put("8", "tuv");
phoneMap.put("9", "wxyz");
if (!"".equals(digits)) {
travels("",digits);
}
return result;
}
private void travels(String str,String rest){
if ("".equals(rest)){
result.add(str);
} else {
String aLetter = rest.substring(0,1); // 取第一个
String letters = phoneMap.get(aLetter);
for (int i = 0; i < letters.length(); i++){
String al = letters.substring(i,i+1);
travels(str + al,rest.substring(1)); // 去除第一个,取其后的部分
}
}
}
}