蛮力法暴力破解
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
class Solution {
public List<String> letterCombinations(String digits) {
if (digits.length()==0)
return new ArrayList<>();
HashMap<Character, ArrayList<Character>> map
= new HashMap<Character, ArrayList<Character>>(){{
put('2',new ArrayList<>(Arrays.asList('a','b','c')));
put('3',new ArrayList<>(Arrays.asList('d','e','f')));
put('4',new ArrayList<>(Arrays.asList('g','h','i')));
put('5',new ArrayList<>(Arrays.asList('j','k','l')));
put('6',new ArrayList<>(Arrays.asList('m','n','o')));
put('7',new ArrayList<>(Arrays.asList('p','q','r','s')));
put('8',new ArrayList<>(Arrays.asList('t','u','v')));
put('9',new ArrayList<>(Arrays.asList('w','x','y','z')));
}};
ArrayList<String> res = new ArrayList<>();
for (int i = 0; i < digits.length(); i++) {
char c = digits.charAt(i);
ArrayList<Character> arrays = map.get(c);
if (i==0){
arrays.forEach(e->{
StringBuffer stringBuffer = new StringBuffer().append(e);
res.add(stringBuffer.toString());
});
}else {
ArrayList<String> res1 = new ArrayList<>();
arrays.forEach(e->{
for (int j = 0; j < res.size(); j++) {
String buffer = res.get(j) +e;
res1.add(buffer);
}
});
//清空集合
res.clear();
//存入新的集合
res.addAll(res1);
}
}
return res;
}
}