利用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高级对象构建 多个构造函数的使用
Feb 05 PHP
解析php file_exists无效的解决办法
Jun 26 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
WAF的正确bypass
Jan 05 PHP
PHP正则表达式笔记与实例详解
May 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
UCenter Home二次开发指南
2009/05/28 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
JS回调函数深入理解
2019/10/16 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python连接oracle数据库实例
2014/10/17 Python
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python实现一个简单的MySQL类
2015/01/07 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
css3中transition属性详解
2014/09/02 HTML / CSS
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
2014年文艺部工作总结
2014/11/17 职场文书
继续教育个人总结
2015/03/03 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
Win11软件图标固定到任务栏
2022/04/19 数码科技