首页 > 编程语言 > 详细

PHP算法之电话号码的字母组合

时间:2019-12-09 21:37:16      阅读:95      评论:0      收藏:0      [点我收藏+]

给定一个仅包含数字 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;

    }
}

PHP算法之电话号码的字母组合

原文:https://www.cnblogs.com/corvus/p/12013580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!