算法题库002

/**
* 这是leetcode 上的一道题目,根据手机按键上的数字对应的字母,返回任意两个数字按键可能的字母组合
例如:
输入:String “23”
返回:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
*/

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * 分析:思路一,我们进行遍历,采用
 */
public class Algorithm002 {
    //先定义初始化的数组
    private static char[][] dict = { {},{ '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' } };

    public static List<String> letterCombinations(String nums){
        LinkedList<String> results = new LinkedList<>();
        if(nums.length()==0){
           return results;
        }else{
            addNumber(results,0," ",nums);
        }
        return results;
    }

    public static void addNumber(List<String> list, int i, String curstr, String digits)
    {
        if (i == digits.length()) {
            list.add(curstr);
            return;
        }
        char[] candidates = dict[digits.charAt(i) - '1'];
        for (char c : candidates)
            addNumber(list, i+1, curstr + c, digits);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        List<String> list =letterCombinations(str);
        for (String sss:list) {
            System.out.println("字符串"+sss);
        }
    }
}

实际测试效果如下:

45
字符串 gj
字符串 gk
字符串 gl
字符串 hj
字符串 hk
字符串 hl
字符串 ij
字符串 ik
字符串 il

猜你喜欢

转载自blog.csdn.net/LB_Captain/article/details/113915624
002