
在PHP中,判断表达式中括号是否匹配可以通过使用栈(Stack)数据结构来实现。以下是一个简单的实例,用于检查字符串中的括号是否匹配:
<?phpfunction isBalanced($expression) {
$stack = [];
$brackets = [
')' => '(',
'}' => '{',
']' => '['
];
for ($i = 0; $i < strlen($expression); $i++) {
$char = $expression[$i];
// 如果是开括号,压入栈中
if (in_array($char, array_values($brackets))) {
array_push($stack, $char);
}
// 如果是闭括号,检查是否与栈顶元素匹配
elseif (array_key_exists($char, $brackets)) {
if (empty($stack) || array_pop($stack) != $brackets[$char]) {
return false;
}
}
}
// 如果栈为空,说明所有括号都匹配
return empty($stack);}// 测试用例$expression1 = "{[()()]}";$expression2 = "{[(])}";echo isBalanced($expression1) ? "Balanced" : "Not Balanced"; // 输出: Balancedecho "\n";echo isBalanced($expression2) ? "Balanced" : "Not Balanced"; // 输出: Not Balanced?>代码说明:
栈的使用:我们使用一个数组来模拟栈的行为。当遇到开括号(
(,{,[)时,将其压入栈中。当遇到闭括号(),},])时,从栈中弹出栈顶元素并检查是否与当前闭括号匹配。括号匹配:我们使用一个关联数组
$brackets来存储闭括号与开括号的对应关系。遍历字符串:遍历字符串中的每个字符,根据字符的类型(开括号或闭括号)进行相应的操作。
最终检查:遍历结束后,如果栈为空,说明所有括号都匹配;否则,说明有未匹配的括号。
测试用例:
{[()()]}是一个括号匹配的表达式,输出Balanced。{[(])}是一个括号不匹配的表达式,输出Not Balanced。
这个简单的实例可以帮助你理解如何使用栈来检查括号是否匹配。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。


