LeetCode-中等-17. 电话号码的字母组合
题目:
引用自:LeetCode-17. 电话号码的字母组合(如有侵权联系删除)
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
提示:
0 <= digits.length <= 4
digits[i]
是范围['2', '9']
的一个数字。
解题:
没什么好说的,直接干就完事,注意连接字符串的时候用a.concat(b)就可以,比a+b效率高。
代码:
import java.util.ArrayList;
import java.util.List;
//java语言
class Solution {
String[] slist = {"", "", "abc", "def", "ghi", "jkl", "mno",
"pqrs", "tuv", "wxyz"};
public List<String> letterCombinations(String digits) {
List<String> list = new ArrayList<String>();
if(digits == "") return list;
for(int i = 0; i < digits.length(); i++){
int temp = digits.charAt(i) - '0';
list = recursion(list,slist[temp]);
}
return list;
}
public List<String> recursion(List<String> list, String s){
List<String> list2 = new ArrayList<String>();
if (list.size() > 0){
for(int i = 0; i < list.size(); i++){
for(int j = 0; j < s.length(); j++){
list2.add(list.get(i).concat(String.valueOf(s.charAt(j))));
}
}
}else {
for(int j = 0; j < s.length(); j++)
list2.add(String.valueOf(s.charAt(j)));
}
return list2;
}
}
总结:
前段时间一直在用Python写,突然又回来写Java还蛮不顺手的,确实是三天不练手生呀,都要冲起来。以后可能的话,试着用python和Java两种语言实现。