国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

每日一道算法題——Letter Combinations of a Phone Number

2019-11-08 18:50:35
字體:
來源:轉載
供稿:網友

電話號碼的字母組合

題目

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.

number

Input:Digit string "23"Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

分析

隨機按一串數字,給出這些號碼所有可能的字符排列。 為了不產生歧義,我給出下面各個號碼代表的字符

{"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; }}

所以一般排列問題大家都可以先想想回溯法,畢竟代碼實現是很容易的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥乡县| 夏津县| 佛学| 高雄县| 额济纳旗| 宣武区| 二连浩特市| 南安市| 阳春市| 礼泉县| 唐山市| 历史| 外汇| 陇西县| 甘德县| 彰化县| 来宾市| 郯城县| 南开区| 梁平县| 义马市| 定西市| 枣强县| 建阳市| 铜梁县| 包头市| 柳江县| 乐都县| 江都市| 获嘉县| 遂平县| 万山特区| 司法| 云安县| 保德县| 建瓯市| 舒城县| 蕉岭县| 观塘区| 拜城县| 无极县|