Letter Combinations of a Phone Number

来源:互联网 发布:淘宝比熊犬多少钱 编辑:程序博客网 时间:2024/06/03 10:42

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.

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

class Solution {     public List<String> letterCombinations(String digits) {    LinkedList<String> ans = new LinkedList<String>();    String[] mapping = new String[] {"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};    ans.add("");    for(int i =0; i<digits.length();i++){    //i代表第几个数字        int x = Character.getNumericValue(digits.charAt(i));        while(ans.peek().length()==i){//知道全部数据加完,队列该取的数据都取完            String t = ans.remove();//提取链表的第一个去和下一个数字的字符相加,并删掉这个数据            for(char s : mapping[x].toCharArray())                ans.add(t+s);//数字键上的每一个字符都加上去        }    }    return ans;}}

解析:例如 加入输入的是“23”
1、第一个进入 ans.peek().lenght=0,也就是什么都没,
2、String t = ans.remove();取出链表头的字符也就是“”
3、for(char s:mapping[x].toCharArray())实际上就是将2对应的 ‘a’,’b’ ,’c’,依次放到队列中
此时ans = {‘a’,’b’,’c’};
4、i++ ,此时变成第二个数字3对应的
5、此时ans.peek().length()=’a’.length()==1==i String t = ans.remove()==’a’;
6、执行for后 新如队列的有 “ad”,”ae”,”af”
7、执行第五步。。。取得”b”……

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电磁比例阀 液压比例调节阀 比例阀结构简图 比例阀的工作原理图解 比例积分调节阀 比例阀控制器 注塑机比例阀 比例溢流阀 燃气热水器比例阀 比例阀溢流阀 气动比例阀 比例阀控制器说明书 燃气比例阀价格 电液比例溢流阀 液压比例阀 比例阀工作原理 比例阀图片 5比9的比值 动量与冲量 大家比分 比分365 雪园缘即时比分 足球完场赛果比分 八波比分 即时比分完场比分 win比分 比分在线旧版 7n足球即时比分 足球即时比分007 足球角球即时比分 笫一足球网 90足球 一足 net007 足论坛 比对两列数据是否一致 鸡蛋汉堡面浆配方比列 幼儿园看图列式题图片 学前班看图列式题30道 二年级看图列式200道 侧向刚度比