zoukankan      html  css  js  c++  java
  • PHP算法之*的字母组合

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

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

    示例:

    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].


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

    来源:力扣(LeetCode)

    class Solution {

        /**
         * @param String $digits
         * @return String[]
         */
        function letterCombinations($digits) {
            if (empty($digits)) {
                return [];
            }

            // 先创建字典
            $model = ["0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"];

            // 创建一个用于模拟队列的数组
            $resultList = [''];

            // 循环输入$digits
            for ($i=0; $i < strlen($digits); $i++) {
                // 先获取当前$i对应的输入的字符串
                // 再使用intval 转成整形,用于根据键值对取对应的字符串
                $mappIndex = intval($digits[$i]);

                // 总是判断当前$resultList的第一个元素的字符长度是否等于当前$i
                while (strlen($resultList[0]) == $i) {
                    // 将数组$resultList开头的单元移出数组
                    $head = array_shift($resultList);
                    $str = $model[$mappIndex];

                    for ($j=0; $j < strlen($str); $j++) {
                        $resultList[] = $head.$str[$j];
                    }

                }

            }

            return $resultList;

        }
    }
  • 相关阅读:
    ThinkPHP5.0被攻击,发现漏洞
    ThinkPHP5.0引用PHPExcel插件,在页面中导出数据库数据
    ThinkPHP5.0引入插件
    引入UEditor插件
    Form
    点击链接只跳转到首页/本地正常,上传后,除首页外,其余页面404
    Thinkphp5中嵌套循环
    ARouter转场动画无效,试试下面这种写法
    windows下运行.sh文件
    List集合增删元素时,UnsupportedOperationException报错问题
  • 原文地址:https://www.cnblogs.com/corvus/p/12013580.html
Copyright © 2011-2022 走看看