利用PHP判断是否是连乘数字串的方法示例


Posted in PHP onJuly 03, 2017

描述

有这样一道题,给出一个数字串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
 * @return bool
 **/
function isExec($strNum) {
 $str = (string)$strNum;

 for ($i = 0; $i < strlen($str); $i++) {
  $k = 1;

  for ($j = $i + 1; $j < strlen($str); $j++) {

   $a_i = 0;
   $b_i = $i + 1;
   $p_i = $i + 1;
   $m_i = $k++;
   $c_i = $b_i + $m_i;
   $res = false;
   $formula = [];

   while (1) {
    $a = substr($str, $a_i, $p_i);
    $b = substr($str, $b_i, $m_i);

    $n = $a * $b;

    $c = substr($str, $c_i, strlen($n));

    //echo '<br/>' . $a . '*' . $b . '=' . $n . '->' . $c . '<br/>';

    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);
    return true;
   }

   //var_dump($res) . '<br/>';
  }

 }

 return false;
}

执行

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)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP+DBM的同学录程序(4)
Oct 09 PHP
php获取网页内容方法总结
Dec 04 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
PHP之header函数详解
Mar 02 PHP
使用Zttp简化Guzzle 调用
Jul 02 #PHP
详解php几行代码实现CSV格式文件输出
Jul 01 #PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 #PHP
详解如何在云服务器上部署Laravel
Jun 30 #PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 #PHP
ThinkPHP实现登录退出功能
Jun 29 #PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 #PHP
You might like
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP类型约束用法示例
2016/09/28 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python中的集合类型知识讲解
2015/08/19 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Django的models中on_delete参数详解
2019/07/16 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
详解python算法常用技巧与内置库
2020/10/17 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
Exception类的常用方法
2012/06/16 面试题
关于爱国的演讲稿
2014/05/07 职场文书
服务宗旨标语
2014/07/01 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
企业法人代表授权委托书
2014/10/02 职场文书