Given a digit string, return all possible letter combinations that the number could rePResent.
A mapping of digit to letters (just like on the telephone buttons) is given below.

隨機按一串數字,給出這些號碼所有可能的字符排列。 為了不產生歧義,我給出下面各個號碼代表的字符
{"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}這題用回溯法是很好寫的。直接上代碼:
public class Solution { public List<String> letterCombinations(String digits) { if(digits.length()<1) return new LinkedList<String>(); LinkedList<String> ans = new LinkedList<String>(); String[] mapping = {"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; backTrack(digits,0,"",mapping,ans); return ans; } public void backTrack(String digits,int k,String s,String[] mapping ,LinkedList<String> ans){ //結束條件 if(k>=digits.length()){ ans.add(s); return; } String c = mapping[digits.charAt(k)-'0'];//得到按鍵的值 for(int i=0;i<c.length();i++){ s+=c.charAt(i)+"";//把字符c.charAt(i)追加到末尾 backTrack(digits,k+1,s,mapping,ans);//遞歸 下一個按鍵 s = s.substring(0,s.length()-1);//恢復 } return; }}所以一般排列問題大家都可以先想想回溯法,畢竟代碼實現是很容易的。
新聞熱點
疑難解答