Java算法题:电话号码组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

image

示例:

<pre style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; display: block; padding: 9.5px; margin: 0px 0px 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius: 4px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
</pre>

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

public static void main(String[] args) {
        List<String> list = letterCombinations("34");
        for (String string : list) {
            System.out.println(string);
        }
    }

    public static List<String> letterCombinations(String digits) {
        List<String> list = new ArrayList<String>();
        backTrack("", digits, 0, list);
        return list;
    }

    public static void backTrack(String s, String digits, int flag, List<String> list) {
        String[] dicts = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
        if (flag >= digits.length()) {
            list.add(s);
            return;
        }

        String chars = dicts[digits.charAt(flag) - '0'];
        for (int i = 0; i < chars.length(); i++) {
            backTrack(s + chars.charAt(i), digits, flag + 1, list);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 没有记录就没有发生,没有反思就没有进步! ■本周回顾: 上周周日带大宝小宝跟哥嫂一家,自驾游出去玩。去了横店影视城...
    Wendy雯迪阅读 1,544评论 0 0
  • 本文演示CentOS_7.x_64系统搭建Gitlab服务器(社区版)本文属于个人技术分享,若有错误或遗漏,请联系...
    刘浩_d94d阅读 5,955评论 0 3
  • 写在前 这是个茫然的时代,是一群飘着的状态的一个时代。每一个人如同加热的空气中的分子,混乱而无序的乱窜,却又受规则...
    can_qua阅读 1,252评论 0 0
  • 本文演示gitlab-ce-11.2.1汉化本文属于个人技术分享,若有错误或遗漏,请联系并在做更改。 gitlab...
    刘浩_d94d阅读 9,274评论 0 0
  • 货币的本质,是作为记账和交换的工具,只是随着互联网的迅速发展,货币从实体的纸币,过渡到了网络上的一堆数字,我们可以...
    viper44阅读 1,400评论 0 0

友情链接更多精彩内容