利用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和XSS跨站攻击的防范
Apr 17 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python中time、datetime模块的使用
2020/12/14 Python
Python项目打包成二进制的方法
2020/12/30 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
运动会通讯稿400字
2014/01/28 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
签订劳动合同通知书
2015/04/16 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript