电话号码字母组合

 ['a', 'b', 'c'],
            3 => ['d', 'e', 'f'],
            4 => ['g', 'h', 'i'],
            5 => ['j', 'k', 'l'],
            6 => ['m', 'n', 'o'],
            7 => ['p', 'q', 'r', 's'],
            8 => ['t', 'u', 'v'],
            9 => ['w', 'x', 'y', 'z'],
        ];
        $tmpArr = [];
        foreach (str_split($digits) as $digit) {
            if (!empty($digit) && $digit != 1) array_push($tmpArr, $values[$digit]);
        }
        $result = [];
        foreach ($tmpArr as $item) {
            $result = $this->combination($item, $result);
        }

        return $result;
    }

    /**
     * @param array $data
     * @param array $result
     *
     * @return array
     */
    private function combination(array $data, $result = [])
    {
        if (empty($result)) {
            return $data;
        }
        $i = 0;
        $_data = [];
        foreach ($data as $item) {
            foreach ($result as $key => $val) {
                $_data[] = $val . $item;
                $i++;
            }
        }

        return $_data;
    }
}

$digits = '23';
$s = new Solution();
print_r($s->letterCombinations($digits));#["mp","np","op","mq","nq","oq","mr","nr","or","ms","ns","os"]

你可能感兴趣的:(电话号码字母组合)