C ++中的有效括号字符串

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

为了解决这个问题,我们将遵循以下步骤-

  • 遍历表达式,直到用尽为止

    • 如果当前字符是用(,{或[

    • 如果当前字符是右括号,如},}或],则从堆栈弹出,然后

    • 检查弹出的括号是否对应于

    • 当前字符,那很好,否则,那是不平衡的。

  • 字符串用尽后,如果堆栈中还剩下一些起始括号,则说明该字符串不平衡。

例子(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

以上是 C ++中的有效括号字符串 的全部内容, 来源链接: utcz.com/z/343401.html

回到顶部