C++ 中的有效括号


假设我们有一个表达式。表达式中有一些括号;我们必须检查这些括号是否平衡。括号的顺序为 (), {} 和 []。假设有两个字符串。“()[(){()}]”是有效的,但“{[}]”是无效的。

任务很简单;我们将使用栈来执行此操作。我们应按照以下步骤获得解决方案 −

  • 遍历表达式,直到用尽

    • 如果当前字符是像 (, { 或 [ 这样的左括号,则压入栈中

    • 如果当前字符是像 ), } 或 ] 这样的右括号,则从栈中弹出,并检查弹出的括号是否是当前字符的起始括号,如果是,则没问题,否则,就是不平衡的。

  • 字符串用尽后,如果栈中还有一些起始括号,则该字符串是不平衡的。

示例

 实时演示

#include <iostream>
#include <stack>
using namespace std;
bool isBalancedExp(string exp) {
   stack<char> stk;
   char x;
   for (int i=0; i<exp.length(); i++) {
      if (exp[i]=='('||exp[i]=='['||exp[i]=='{') {
         stk.push(exp[i]);
         continue;
      }
      if (stk.empty())
         return false;
      switch (exp[i]) {
      case ')':
         x = stk.top();
         stk.pop();
         if (x=='{' || x=='[')
            return false;
         break;
      case '}':
         x = stk.top();
         stk.pop();
         if (x=='(' || x=='[')
            return false;
         break;
      case ']':
         x = stk.top();
         stk.pop();
         if (x =='(' || x == '{')
            return false;
         break;
      }
   }
   return (stk.empty());
}
int main() {
   string expresion = "()[(){()}]";
   if (isBalancedExp(expresion))
      cout << "This is Balanced Expression";
   else
      cout << "This is Not Balanced Expression";
}

输入

"()[(){()}]"

输出

This is Balanced Expression

更新于:2020 年 4 月 28 日

5 千次观看

开启您的 事业

通过完成课程获得认证

开始
广告