当前位置: 首页 > 编程笔记 >

查找表达式是否在C ++中具有重复的括号

郎同化
2023-03-14
本文向大家介绍查找表达式是否在C ++中具有重复的括号,包括了查找表达式是否在C ++中具有重复的括号的使用技巧和注意事项,需要的朋友参考一下

考虑我们有一个表达式exp,我们必须检查exp周围是否有重复的括号。如果一个子表达式被一组以上的括号包围,则该表达式将具有重复的括号。例如,如果表达式类似于-

(5+((7−3)))

这里的子表达式(7 – 3)被两个括号对包围,因此它们是重复的括号。

为了解决这个问题,我们将使用堆栈。我们将遍历exp中的每个字符,如果该字符是开括号'('或任何运算符或操作数,则将其推入堆栈。当该字符是闭合括号时,则反复从堆栈中弹出字符直到找到匹配的开括号,然后使用一个计数器,该值将在开括号和闭括号对之间遇到的每个字符递增,该值等于计数器的值小于1,然后是一对重复的括号找到,否则找不到。

示例

#include<iostream>
#include<stack>
using namespace std;
bool hasDuplicateParentheses(string str) {
   stack<char> stk;
   for (int i = 0; i<str.length(); i++) {
      char ch = str[i];
      if (ch == ')') {
         char top = stk.top();
         stk.pop();
         int count = 0;
         while (top != '(') {
            count++;
            top = stk.top();
            stk.pop();
         }
         if(count < 1) {
            return true;
         }
      }
      else
         stk.push(ch);
   }
   return false;
}
int main() {
   string str = "(5+((7-3)))";
   if (hasDuplicateParentheses(str))
      cout << "Duplicate parentheses has Found";
   else
      cout << "No Duplicates parentheses has Found ";
}

输出结果

Duplicate parentheses has Found
 类似资料:
  • 问题内容: 在PHP脚本中,应该使用什么正则表达式来检查字符串中不匹配的括号?我要允许的内容包括: 还行吧) 还行吧) 我要防止的事情: 这是不好的( 这也是(不好 这是(不好(太)了 谢谢! 更新:你们都摇滚。使用正则表达式执行此操作似乎比应做的要难,而这些第二级答案正是使stackoverflow变得漂亮的原因。感谢您的链接和伪代码。我不确定要给谁答案,所以我向所有我不能接受的人表示歉意。 问

  • 我有一个带两个可能输出的字符串,它将被<代码>

  • 我正在阅读Avalonia的源代码,我遇到了这样一句话: 我从没见过这样的语法。如果没有索引属性或这个[]访问器,这些括号会做什么?,如果他们所指的财产不是布尔,为什么要用感叹号来否定呢?,也许是某种空检查? 代码本身包含在以下cs文件中: https://github.com/AvaloniaUI/Avalonia/blob/master/src/Avalonia.Controls/Flyout

  • 我正在为PHPs'编写一个正则表达式函数,以查找包含字符串中所有内容的所有。(在我的例子中,我只有一个if,因为它不是问题的根源。) 以下是到目前为止我得到的信息: 模式: 字符串: 当前输出: 预期输出: 问题是:正则表达式会找到第一个右括号。 我哪里做错了?如何处理嵌套括号? 演示:https://regex101.com/r/SgBqbW/1

  • New in Django 1.7. 这篇文档是查找 API 的参考,Django 用这些API 构建数据库查询的WHERE 子句。若要学习如何使用 查找,参见执行查询;若要了解如何创建 新的查找,参见自定义查找。 查找 API 由两个部分组成:RegisterLookupMixin 类,它用于注册查找;查询表达式API,它是一个方法集,类必须实现它们才可以注册成一个查找。 Django 有两个