剑指 Offer 46. 把数字翻译成字符串

class Solution {

    /**

     * @param Integer $num

     * @return Integer

     *使用动态规划,从0到当前指针的指向的数字的方法个数  = 从0到当前指针的指向的数字的前一个数字的方法个数 +从0到当前指针的指向的数字的前两个数字的方法个数(当前数字在0到5之间并且前一个数字等于2 或者当前数字在0到9之间并且*前一个数字等于1)     

*/


    function translateNum($num) {

        $res = [];

        $num = (string)$num;

        //初始化-1为1,当只要一个数是也为1

        $res[-1] = 1;

        for($i=0;$i<strlen($num);$i++){

            if($i == 0){

                $res[$i] = 1;

            }else{

                if(($num[$i] >=0 && $num[$i] <=5 && $num[$i-1] == 2) || ($num[$i-1] == 1)){

                    $res[$i] = $res[$i-1]+$res[$i-2];

                }else{

                    $res[$i] = $res[$i-1];

                }

            }

        }

        return $res[strlen($num)-1];

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。