0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# leetcode回溯的题目-电话按键组合问题

常见的子集,组合问题经常会用到回溯的思想,一般遍历所有分支,会用到回溯






import java.util.ArrayList;

/**
<p>给定一个仅包含数字 <code>2-9</code> 的字符串,返回所有它能表示的字母组合。答案可以按 <strong>任意顺序</strong> 返回。</p>

<p>给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。</p>

<p><img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/11/09/200px-telephone-keypad2svg.png" style="width: 200px;" /></p>

<p> </p>

<p><strong>示例 1:</strong></p>

<pre>
<strong>输入:</strong>digits = "23"
<strong>输出:</strong>["ad","ae","af","bd","be","bf","cd","ce","cf"]
</pre>

<p><strong>示例 2:</strong></p>

<pre>
<strong>输入:</strong>digits = ""
<strong>输出:</strong>[]
</pre>

<p><strong>示例 3:</strong></p>

<pre>
<strong>输入:</strong>digits = "2"
<strong>输出:</strong>["a","b","c"]
</pre>

<p> </p>

<p><strong>提示:</strong></p>

<ul>
<li><code>0 <= digits.length <= 4</code></li>
<li><code>digits[i]</code> 是范围 <code>['2', '9']</code> 的一个数字。</li>
</ul>
<div><div>Related Topics</div><div><li>哈希表</li><li>字符串</li><li>回溯</li></div></div><br><div><li>👍 2087</li><li>👎 0</li></div>
*/

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public List<String> letterCombinations(String digits) {
if("".equals(digits)){
return new ArrayList<>();
}

Map<Character, String> phoneMap = 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");
}};
List<String> combinations = new ArrayList<>();
backtrack(combinations,phoneMap,digits,0,new StringBuffer());
return combinations;

}

void backtrack(List<String> combinations ,Map<Character,String> phoneMap,String digits,int index,StringBuffer sb){
if(index==digits.length()){
combinations.add(sb.toString());
}else{
char digit = digits.charAt(index);
String letters = phoneMap.get(digit);
for (int i = 0; i < letters.length(); i++) {
sb.append(letters.charAt(i));
backtrack(combinations,phoneMap,digits,index+1,sb);
sb.deleteCharAt(index);
}
}
}

}
//leetcode submit region end(Prohibit modification and deletion)

举报

相关推荐

0 条评论