<?php $arrParams = getopt("c:"); $arrCheck = checkParams($arrParams); if (false === $arrCheck["flag"]) { echoMsg($arrCheck); exit; } $strClose = $arrParams["c"]; $intI = 0; $arrCnt = array($intI => 0); $intIsClose = 0;//长度是否闭合 0: 闭合; 1: (过多; -1: )过多; $intOrder = 0;//闭合括号是否有序闭合 0: 有序闭合; 1: 非有序; do { if (1 === strlen($strClose)) { $strCur = $strClose; } else { $strCur = substr($strClose, 0, 1); } $strClose = substr($strClose, 1); /** * 最大闭合长度 * 与判断是否闭合 */ if ($strCur == '(') { $arrCnt[$intI] = $arrCnt[$intI] + 1; $intIsClose++; $intOrder = 1; } elseif ($strCur == ')') { $intI++; $intIsClose--; $arrCnt[$intI] = 0; $intOrder = 0; } } while (!empty($strClose)); if (0 === $intIsClose && 0 === $intOrder ) { rsort($arrCnt); $intMaxNum = current($arrCnt); $arrCheck["msg"] = "是有序闭合括号字符串," . '最大闭合括号数量为: ' . $intMaxNum; } else { $arrOut["flag"] = false; if ($intIsClose > 0) { $arrCheck["msg"] = "检查字符串 \"(\" 过多"; } elseif ($intIsClose < 0) { $arrCheck["msg"] = "检查字符串 \")\" 过多"; } else { $arrCheck["msg"] = "可能存在 \")(\" 请检查字符串"; } } echoMsg($arrCheck); /** * 检查入参 */ function checkParams($arrParams = array()) { $arrOut = array( "flag" => false, "msg" => "", ); if (empty($arrParams["c"])) { $arrOut["msg"] = "闭合字符串不得为空"; return $arrOut; } if (0 !== strpos($arrParams["c"], "(")) { $arrOut["msg"] = "非闭合括号字符串"; return $arrOut; } if (false === strpos($arrParams["c"], ")")) { $arrOut["msg"] = "非闭合括号字符串2"; return $arrOut; } $arrOut["flag"] = true; return $arrOut; } /** * 输出函数 */ function echoMsg($arrCheck = array()) { $strPre = $arrCheck["flag"] === true? "SUCCESS": "ERR"; echo $strPre . ": " . $arrCheck["msg"]; echo "\n"; exit; }
test admin$ php close.php -c "()" SUCCESS: 是有序闭合括号字符串,最大闭合括号数量为: 1 test root$ php close.php -c "((()))" SUCCESS: 是有序闭合括号字符串,最大闭合括号数量为: 3 test admin$ php close.php -c "((()))" SUCCESS: 是有序闭合括号字符串,最大闭合括号数量为: 3 test root$ php close.php -c "((()))(" SUCCESS: 检查字符串 "(" 过多 test admin$ php close.php -c "((())))" SUCCESS: 检查字符串 ")" 过多 test root$ php close.php -c "((())))(" SUCCESS: 可能存在 ")(" 请检查字符串
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现