用string的简单尝试
回溯
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public List<String> letterCombinations(String digits) {
List<String> ans = new ArrayList<>();
if (digits.length() == 0) {
return ans;
}
Map<Character, String> map = new HashMap<Character, String>() {{
put('2', "abc");
put('3', "def");
put('4', "ghi");
put('5', "jkl");
put('6', "mno");
put('7', "pqrs");
put('8', "tuv");
put('9', "wxyz");
}};
backtrack(ans, digits, map, 0, new String());
return ans;
}
public void backtrack(List<String> ans, String digits, Map<Character, String> map, int nowIndex, String sb) {
if (nowIndex == digits.length()) {
ans.add(sb.toString());
} else {
char nowChar = digits.charAt(nowIndex);
String nowString = map.get(nowChar);
for (int i = 0; i < nowString.length(); i++) {
backtrack(ans, digits, map, nowIndex + 1, sb + nowString.charAt(i));
}
}
}
}
//leetcode submit region end(Prohibit modification and deletion)
换了stringbuilder/stringbuffer速度直接起飞
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public List<String> letterCombinations(String digits) {
List<String> ans = new ArrayList<>();
if (digits.length() == 0) {
return ans;
}
Map<Character, String> map = new HashMap<Character, String>() {{
put('2', "abc");
put('3', "def");
put('4', "ghi");
put('5', "jkl");
put('6', "mno");
put('7', "pqrs");
put('8', "tuv");
put('9', "wxyz");
}};
backtrack(ans, digits, map, 0, new StringBuilder());
return ans;
}
public void backtrack(List<String> ans, String digits, Map<Character, String> map, int nowIndex, StringBuilder sb) {
if (nowIndex == digits.length()) {
ans.add(sb.toString());
} else {
char nowChar = digits.charAt(nowIndex);
String nowString = map.get(nowChar);
for (int i = 0; i < nowString.length(); i++) {
backtrack(ans, digits, map, nowIndex + 1, sb.append(nowString.charAt(i)));
sb.deleteCharAt(nowIndex);
}
}
}
}
//leetcode submit region end(Prohibit modification and deletion)
247

被折叠的 条评论
为什么被折叠?



