利用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 和 MySQL 基础教程(三)
Oct 09 PHP
一个高ai的分页函数和一个url函数
Oct 09 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
form自动提交实例讲解
Jul 10 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 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中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
python3爬虫怎样构建请求header
2018/12/23 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
后进生转化工作制度
2014/01/17 职场文书
书法比赛获奖感言
2014/02/10 职场文书
网页美工求职信范文
2014/04/17 职场文书