利用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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
[转帖]PHP世纪万年历
Dec 06 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
php权重计算方法代码分享
Jan 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP中常用的魔术方法
Apr 28 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
PHP PDOStatement::bindValue讲解
Jan 30 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
Python中几个比较常见的名词解释
2015/07/04 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python实现图片识别汽车功能
2018/11/30 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
python设置环境变量的作用整理
2020/02/17 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
化妆品店促销方案
2014/02/24 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
社会实践活动总结
2015/02/05 职场文书
个性与发展自我评价
2015/03/06 职场文书
护士求职自荐信
2015/03/25 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫