public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param digits string字符串 输入的号码
* @return string字符串ArrayList
*/
ArrayList<String> list = new ArrayList<>();
public ArrayList<String> letterCombinations (String digits) {
letterCombinations(digits.toCharArray());
return list;
}
public void letterCombinations (char[] digits) {
if (digits.length == 1) {
char c = digits[0];
if (c == '2') {
list.add("a");
list.add("b");
list.add("c");
} else if (c == '3') {
list.add("d");
list.add("e");
list.add("f");
} else if (c == '4') {
list.add("g");
list.add("h");
list.add("i");
} else if (c == '5') {
list.add("j");
list.add("k");
list.add("l");
} else if (c == '6') {
list.add("m");
list.add("n");
list.add("o");
} else if (c == '7') {
list.add("p");
list.add("q");
list.add("r");
list.add("s");
} else if (c == '8') {
list.add("t");
list.add("u");
list.add("v");
} else if (c == '9') {
list.add("w");
list.add("x");
list.add("y");
list.add("z");
}
return;
}
char[] chars = new char[digits.length - 1];
for (int i = 0; i < digits.length - 1; i++) {
chars[i] = digits[i+1];
}
letterCombinations(chars);
char c = digits[0];
if (c == '2') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("a" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("b" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("c" + list.get(j));
}
list = temp;
} else if (c == '3') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("d" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("e" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("f" + list.get(j));
}
list = temp;
} else if (c == '4') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("g" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("h" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("i" + list.get(j));
}
list = temp;
} else if (c == '5') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("j" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("k" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("l" + list.get(j));
}
list = temp;
} else if (c == '6') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("m" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("n" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("o" + list.get(j));
}
list = temp;
} else if (c == '7') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("p" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("q" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("r" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("s" + list.get(j));
}
list = temp;
} else if (c == '8') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("t" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("u" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("v" + list.get(j));
}
list = temp;
} else if (c == '9') {
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < list.size(); j++) {
temp.add("w" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("x" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("y" + list.get(j));
}
for (int j = 0; j < list.size(); j++) {
temp.add("z" + list.get(j));
}
list = temp;
}
}
}