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

二、解题思路:

这个我自己没做出来。。。是参考别人的,思路是这样的。

1、每次读字符串中的一个数字字符,删掉一List中第一个字符串并记下来,然后循环将这个字符串与数字字符对应的字符合并加进List中。

2、初始化时,为方便起见,先给list中加入一个空字符串。

3、注意空字符串输入时的情况。

有点用到了栈。

三、源码:

import java.util.ArrayList;
import java.util.List;

public class Solution
{
    public List<String> letterCombinations(String digits)
    {
    	char[][] letter = {{},{},{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'},{'m','n','o'},{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}};
    	ArrayList<String> relt = new ArrayList<String>();
    	if (digits.length() == 0) return relt;
    	relt.add("");
    	for (int i = 0; i < digits.length(); i++)
    	{
    		int size = relt.size();
    		for (int j = 0; j < size; j++)
    		{
    			if (letter[digits.charAt(i)-'0'].length == 0) continue;
    			String q = relt.get(0);
    			relt.remove(0);
    			for (int k = 0; k < letter[digits.charAt(i)-'0'].length; k++)
    			{
    				relt.add(q + letter[digits.charAt(i) - '0'][k] + "");
    			}
    		}
    	}
    	return relt;
    }
    public static void main(String args[])    
    {    
        String digits = "";   
        Solution so = new Solution();    
        System.out.println(so.letterCombinations(digits));   
            
    }    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值