Leetcode基础刷题之PHP解析(17. Letter Combinations of a Phone Number)
2019-6-3 星期一 开始吧
之前把Leetcode上关于二叉树整理出了14道经典题目,如果面试写不出来,那麻烦你手写一个红黑树吧
题目描述
让我们根据电话号码的数字,组合所有情况的字符串,题目给的是23,对应着九种组合。
题目分析
思想就是把给定的数字一位位拿出来,获取它指定的字符串集,然后和其他位上的数字字符串集和一位位进行组合。
/** * @param String $digits * @return String[] */ function letterCombinations($digits) { return $this->helper($digits,""); } function helper($digits,$char) { $array = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]; $res=[]; $strings=$array[$digits[0]]; $len=strlen($strings); for($i=0;$i<$len;$i++){ $val=$strings[$i]; if(strlen($digits)==1){ //如果给定只有一个数字的话 array_push($res,$char.$val); }else{ $moreStrings=$this->helper(substr($digits,1),$char.$val); foreach($moreStrings as $more){ array_push($res,$more); } } } return $res; }
No Comments