电话号码的字母组合
https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
class Solution {
public List < String > letterCombinations(String digits) {
List < String > resultList = new ArrayList();
if(digits == null || digits.length() == 0) {
return resultList;
}
Map < Character, List < Character >> map = new HashMap();
List < Character > list2 = new ArrayList();
list2.add('a');
list2.add('b');
list2.add('c');
map.put('2', list2);
List < Character > list3 = new ArrayList();
list3.add('d');
list3.add('e');
list3.add('f');
map.put('3', list3);
List < Character > list4 = new ArrayList();
list4.add('g');
list4.add('h');
list4.add('i');
map.put('4', list4);
List < Character > list5 = new ArrayList();
list5.add('j');
list5.add('k');
list5.add('l');
map.put('5', list5);
List < Character > list6 = new ArrayList();
list6.add('m');
list6.add('n');
list6.add('o');
map.put('6', list6);
List < Character > list7 = new ArrayList();
list7.add('p');
list7.add('q');
list7.add('r');
list7.add('s');
map.put('7', list7);
List < Character > list8 = new ArrayList();
list8.add('t');
list8.add('u');
list8.add('v');
map.put('8', list8);
List < Character > list9 = new ArrayList();
list9.add('w');
list9.add('x');
list9.add('y');
list9.add('z');
map.put('9', list9);
// // 将队列中已有的组合拉出来,与当前位置的字母逐一组合,然后又放进队列里
Queue < String > queue = new LinkedList();
for(int i = 0; i < digits.length(); i++) {
if(i == 0) {
List < Character > list = map.get(digits.charAt(i));
for(Character c: list) {
queue.add(String.valueOf(c));
}
continue;
}
// 队列中已有的组合数量
int size = queue.size();
for(int j = 0; j < size; j++) {
String s = queue.poll();
List < Character > list = map.get(digits.charAt(i));
for(Character c: list) {
queue.add(s + String.valueOf(c));
}
}
}
int size = queue.size();
for(int j = 0; j < size; j++) {
String s = queue.poll();
resultList.add(s);
}
return resultList;
}
}
积跬步以致千里,积小流以成江海。
2016年5月之前的博文发布于51cto,链接地址:shamrock.blog.51cto.com
2016年5月之后博文发布与cnblogs上。
Github地址 https://github.com/umgsai
Keep moving~!!!
2016年5月之前的博文发布于51cto,链接地址:shamrock.blog.51cto.com
2016年5月之后博文发布与cnblogs上。
Github地址 https://github.com/umgsai
Keep moving~!!!