`
vvaaiinn
  • 浏览: 21039 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

LeetCode 17 Letter Combinations of a Phone Number 数字转为字母组合

 
阅读更多

题目:

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"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

翻译:

给一个数字的字符串,输出对应键盘上的所有字符的组合。

思路:

对于数字的字符串23来说,可以先生成一个List<String> result =new ArrayList<>()保存结果。

(Java中List<String> result =new ArrayList<>();List<String> result =new ArrayList<>();List是集合最大的父类,它包含了ArrayList。 如果直接声明为ArrayList<String> list=new ArrayList<String>()这个也没有问题。 而声明成:List<String> list=new ArrayList<String>();这样的形式使得list这个对象可以有多种的存在形式,比如要用链表存数据的话直接用LinkedList,使用ArrayList或者Vector直接通过list去=就可以了,这样让list这个对象活起来了)

对字符串的每个数字进行遍历,首先为2,则把‘2‘-’0‘对应的字符分别加入到res临时List中,此时res为{’a‘,'b','c'};

令result = res; 字符串此时指向3,这是把’3‘-’0‘对应的每个字符,分别加入到result目前已有的字符的后面。

即一个双重循环遍历。


代码


	public static List<String> letterCombinations(String digits) {
        List<String> result =new ArrayList<>();
        if(digits == null || digits.isEmpty())
        	return result;
        result.add("");	
        String []btns = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};  
        for(int i =0 ; i < digits.length() ;i++)
        {
        	List<String> res = new ArrayList<>();
        	String letter = btns[digits.charAt(i)-'0'];
        	for(int j = 0 ; j < result.size();j++)//遍历上一个列表,取出每一个元素,并和新的元素的每一个字符加起来保存
        	{
        		for(int k = 0; k< letter.length(); k++)//遍历当前数字对应的所有字符
        		{
        			res.add(result.get(j)+letter.charAt(k));
        		}
        	}
        	result = res;
        }
                
        return result;
    }


刚才找了找资料,有人说可以用BFS遍历去做。还有的用递归的做。

感觉还是不错。代码就不贴了。

分享到:
评论

相关推荐

    17. Letter Combinations of a Phone Number**

    17. Letter Combinations of a Phone Number** https://leetcode.com/problems/letter-combinations-of-a-phone-number/ 题目描述 Given a string containing digits from 2-9 inclusive, return all possible ...

    程序员面试宝典LeetCode刷题手册

    17. Letter Combinations of a Phone Number 18. 4Sum 19. Remove Nth Node From End of List 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 23. Merge k Sorted Lists 24. Swap ...

    LeetCode 电话号码的字母组合

    题目来源:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 ...

    Leetcode扑克-leetcode:Leetcode算法实践

    电话号码的字母组合 回溯法,递归 / Backtrack,Recursion 回溯+递归 Daily Challenge 2020/08/26 20 Valid Parentheses 有效的括号 Stack / 栈 用栈实现配对 Daily Challenge 2020/08/14 28 Implement strStr() ...

    leetcode怎么销号-LeetCode-Solutions:我自己的LeetCode解决方案

    leetcode怎么销号 LeetCode-Solutions :green_heart:My own LeetCode solutions No. Problem LeetCode 力扣 Python Go Solution Difficulty Tag 0017 Letter Combinations of a Phone Number Medium 回溯、暴力 0034...

    leetcode2sumc-leetcode:JavaScript版本leetcode中文版代码

    leetcode 2 sum c leetcode 力扣(Leetcode)编程题,JavaScript版本。 编号 中文题目 英文题目 题目描述 JavaScript 难度 1 Two Sum 简单 2 Add Two Numbers 中等 3 Longest Substring Without Repeating... 中等 5...

    Coding Interview In Java

    leetcode Java 246 題目及解答 (英文) Contents 1 Rotate Array in Java 15 ...242 Letter Combinations of a Phone Number 587 243 Restore IP Addresses 589 244 Reverse Integer 591 245 Palindrome Number 593

    leetcode338-LeetCode:LeetCode刷题总结

    第 338 章力码 LeetCode刷题总结 1.Two Sum 2.Add Two Numbers 3.Longest Substring Without Repeating ...of ...Number ...17.Letter Combinations of a Phone Number 18.4Sum 19.Remove Nth Node From End

    leetcode分类-LeetCode-Java-Accepted:这是我的Java学习之旅

    leetcode 分类LeetCode-Java-接受 这是 Leetcode 问题的 Java 解决方案。 细节 标题和答案格式 /* * 17. Letter Combinations of a Phone Number * Target: Given a string containing digits from 2-9 inclusive, ...

    leetcode530-algorithm:算法

    leetcode 530 ** LeetCode 题目更新 ** 用来记录业余时间所做的算法题目,保持对于数据结构的熟悉。 ** Leetcode 题目列表 005 Longest Palindromic Substring 006 ZigZag Conversion 007 Reverse Integer 008 ...

    leetcode二维数组搜索-LeetCode-Review:重写LeetCode问题

    17.Letter Combinations of a Phone Number backtracking int solution[MAX_DIMENSION]; void Backtracking(int dimension) { if(solution is well-generated) { process solution return; } for( x = each value of...

    leetcode怎么计算空间复杂度是指-LeetCode-Solution:我的第一个LeetCode解决方案

    leetcode怎么计算空间复杂度是指 LeetCode-Solution my first solution of LeetCode 2015-5-7 Problem 95,98(80 already!) 我经常在递归的结束地方忘记return!!! 题型一:经典暴力递归:(里面涉及到重复不重复的...

    leetcode怎么销号-leetcodeAns:leetcode问题的答案python

    17.Letter Combinations of a Phone Number: 这题是要找到号码对应字符串的所有组合。用字典来表示数字到字符串的组合。然后遍历数字串。使其对应的字母list与前面已有的组合进行 连接即可。 19.Remove Nth Node ...

    javalruleetcode-leetcode:leetcode问题的解决方案

    java lru leetcode Leetcode 问题的解决方案 问题 解决方案 0001_Two_Sum 0002_Add_Two_Numbers 0003_Longest_Substring_Without_Repeating_Characters ...0004_Median_of_Two_...0017_Letter_Combinations_of_a_Phone_N

    cpp-算法精粹

    Letter Combinations of a Phone Number 广度优先搜索 Word Ladder Word Ladder II Surrounded Regions 总结 深度优先搜索 Additive Number Palindrome Partitioning Unique Paths Unique Paths II N-Queens N-...

    gasstationleetcode-leetcode-rust:莱特代码休息

    加油站 leetcode ...17-letter-combinations-of-a-phone-number 20 cargo run --bin 20-valid-parentheses 21 cargo run --bin 21-merge-two-sorted-lists 27 cargo run --bin 27-remove-element 28

    Dir-For-LeetCode

    017_Letter_Combinations_of_a_Phone_Number 018_4总和 019_Remove_Nth_Node_From_End_of_List 020_Valid_Parentheses 021_Merge_Two_Sorted_Lists 022_Generate_Parentheses 023_Merge_k_Sorted_Lists 024_...

Global site tag (gtag.js) - Google Analytics