利用PHP判断是否是连乘数字串的方法示例
描述
有这样一道题,给出一个数字串A,需要判断A是否为连乘数字串,连乘数字串的定义就是一个数字串可以拆分成若干个数字,后面的数字(从第N个数字开始)为前面2个数字的乘积。
举例
(1)'122'---可以拆成[1|2|2]
结果:1×2=2 (连乘数字串)
(2)'1122242'---可以拆成[11|22|242]
结果: 11×22=242 (连乘数字串)
(3)'1224832256'---可以拆成[1|2|2|4|8|32|256]
结果:1×2=2,2×2=4,2×4=8,4×8=32,8×32=256(连乘数字串)
(4)'234547898185239692'---可以拆成[23454|7898|185239692]
结果:23454×7898=185239692(连乘数字串)
(5)'113'可以拆成[1|1|3]
结果:1×1!=3 (非连乘数字串)
代码
/** *判断是否连乘数字串函数 *@param$strNum *@returnbool **/ functionisExec($strNum){ $str=(string)$strNum; for($i=0;$i'.$a.'*'.$b.'='.$n.'->'.$c.'
'; if($c){ $formula[]=$a.'*'.$b.'='.$n; } if($c===false||$c===""){ break; } if(intval($n)==intval($c)){ $p_i=strlen($b); $m_i=strlen($n); $a_i=$b_i; $b_i=$c_i; $c_i=$b_i+$m_i; $res=true; }else{ $res=false; break; } } if($res===true){ print_r($formula); returntrue; } //var_dump($res).'
'; } } returnfalse; }
执行
var_dump(isExec('1224832256'));
//运行结果 Array [ [0]=>1*2=2 [1]=>2*2=4 [2]=>2*4=8 [3]=>4*8=32 [4]=>8*32=256 ] bool(true)
var_dump(isExec('234547898185239692'));
//运行结果 Array [ [0]=>23454*7898=185239692 ] bool(true)
var_dump(isExec('1122242'));
//运行结果 Array [ [0]=>11*22=242 ] bool(true)
var_dump(isExec('11234'));
//运行结果 bool(false)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对毛票票的支持。