一般做海报的图片跟哪个网站下载,最具价值的网站建设,永州网站建设企业,多媒体设计与制作是干什么的1 题目理解
给定一个字符串string#xff0c;字符范围是[2,9]之间的数字。数字表示电话上的一个按钮。返回字符串的可能所有组合方式。每个数字对应的字母如下图所示。 Example 1:
Input: digits “23” Output: [“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”…1 题目理解
给定一个字符串string字符范围是[2,9]之间的数字。数字表示电话上的一个按钮。返回字符串的可能所有组合方式。每个数字对应的字母如下图所示。 Example 1:
Input: digits “23” Output: [“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] Example 2:
Input: digits “” Output: [] Example 3:
Input: digits “2” Output: [“a”,“b”,“c”]
2 回溯
用回溯的方法可以解决。每次处理一个数字每个数字对应3-4种转换。 这里我自己的一个小技巧是dfs函数中的变量都是与状态相关的。其他变量都作为成员变量。这样可以更关注dfs过程中的状态。
class Solution {private MapCharacter,String map new HashMapCharacter,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);}};private String digits;private ListString answer;public ListString letterCombinations(String digits) {answer new ArrayListString();if(digits.length()0) return answer;StringBuilder str new StringBuilder();this.digits digits;dfs(0,str);return answer;}private void dfs(int index,StringBuilder str){if(index digits.length()){answer.add(str.toString());}else{String value map.get(digits.charAt(index));for(int i0;ivalue.length();i){str.append(value.charAt(i));dfs(index1,str);str.setLength(str.length()-1);}}}
}