leetcode-17-回溯

import java.util.ArrayList; /** <p>給定一個僅包含數字&nbsp;<code>2-9</code>&nbsp;的字符串,返回所有它能表示的字母組合。答案可以按 <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>&nbsp;</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>&nbsp;</p> <p><strong>提示:</strong></p> <ul> <li><code>0 &lt;= digits.length &lt;= 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章