使用堆栈算法进行括号/括号匹配

2023-11-29

例如,如果括号/方括号在以下内容中匹配:

({})
(()){}()
()

等等,但如果括号/方括号不匹配,则应返回 false,例如:

{}
({}(
){})
(()

等等。您能检查一下这个代码吗?

public static boolean isParenthesisMatch(String str) {
    Stack<Character> stack = new Stack<Character>();

    char c;
    for(int i=0; i < str.length(); i++) {
        c = str.charAt(i);

        if(c == '{')
            return false;

        if(c == '(')
            stack.push(c);

        if(c == '{') {
            stack.push(c);
            if(c == '}')
                if(stack.empty())
                    return false;
                else if(stack.peek() == '{')
                    stack.pop();
        }
        else if(c == ')')
            if(stack.empty())
                return false;
            else if(stack.peek() == '(')
                    stack.pop();
                else
                    return false;
        }
        return stack.empty();
}

public static void main(String[] args) {        
    String str = "({})";
    System.out.println(Weekly12.parenthesisOtherMatching(str)); 
}

您的代码在处理“{”和“}”字符时存在一些混乱。它应该与处理“(”和“)”的方式完全平行。

这段代码对您的代码稍加修改,似乎可以正常工作:

public static boolean isParenthesisMatch(String str) {
    if (str.charAt(0) == '{')
        return false;

    Stack<Character> stack = new Stack<Character>();

    char c;
    for(int i=0; i < str.length(); i++) {
        c = str.charAt(i);

        if(c == '(')
            stack.push(c);
        else if(c == '{')
            stack.push(c);
        else if(c == ')')
            if(stack.empty())
                return false;
            else if(stack.peek() == '(')
                stack.pop();
            else
                return false;
        else if(c == '}')
            if(stack.empty())
                return false;
            else if(stack.peek() == '{')
                stack.pop();
            else
                return false;
    }
    return stack.empty();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用堆栈算法进行括号/括号匹配 的相关文章

  • HTTP 状态 404 - 请求的资源不可用

    在使用 MyEclipse IDE 中的 Tomcat 服务器和 Struts 2 框架时 我遇到了反复出现的问题 我将我的程序作为服务器应用程序运行 当它运行时 默认的index jsp 文件将成功打开 但应用程序的其他过去都不起作用 当
  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • Android - 如何访问 onResume 中 onCreate 中实例化的 View 对象?

    In my onCreate 方法 我正在实例化一个ImageButton View public void onCreate Bundle savedInstanceState super onCreate savedInstanceSt
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素

随机推荐

  • 删除Python中所有子进程的输出而无需访问代码

    在Python中我正在使用 sys stdout None 在一些我无法控制的电话之前 这些调用可能会调用一些写入标准输出的子进程 如何避免此子进程调用写入标准输出 同样 我不拥有调用子流程的代码的所有权 看来 subprocess Pop
  • Java中两个图像之间的碰撞检测

    我正在编写的游戏中显示了两个角色 玩家和敌人 定义如下 public void player Graphics g g drawImage plimg x y this public void enemy Graphics g g draw
  • javascript 对象文字使用它自己的字段

    我想创建一个包含特定组件的整个配置的对象 我也想这样 var ObjectConfig fieldKeys name Obj name state Obj state color Obj color templates basicTempl
  • Java优先级队列是如何工作的? [复制]

    这个问题在这里已经有答案了 简而言之 我正在实现一个图表 现 在我正在研究 Kruskal 我需要一个优先级队列 我对优先级队列的定义是具有最小键的元素将排在第一位 这是错误的吗 因为当我在队列中插入加权边 或数字 时 它们最终不会被排序
  • 全宽背景,无包装

    我正在一个网站上工作 想看看是否有更好的方法来达到相同的结果 问题 该页面由几个部分组成 每个部分都有自己的背景 该背景应该是浏览器的整个宽度 每个部分内的内容均以 960 像素为中心 目前 我正在将每个部分包装在一个看似不必要的包装纸中
  • 经过一系列操作后,如何将元素重置为原始状态?

    经过一系列动画 添加类和设置 css 样式之后 有没有一种简单的方法可以将元素重置为原始服务器交付状态 jQuery 使用内联设置其操作style属性 所以只需将其设置为 someDiv attr style 这假设没有内联style在来自
  • python:如何加密文件?

    任何人都可以帮助 或指出一些例子 如何使用 python 加密文件吗 我必须使用以下参数来加密文件 block size 8 iv qwertyui12345678 method des3 cbc 我也不知道什么iv means 请帮忙 提
  • mod_rewrite 更改查询字符串参数名称

    我需要帮助编写 mod 重写规则来更改查询字符串参数的名称 我想更改名称 而不是值 旧名partner新名字a aid 所以像这样的链接 http domain com partner derphipster pname foo plink
  • 使用 GSON 解析没有特定字段结构的 JSON

    我正在使用 EmpireAvenue API 开发 Android 应用程序 API 使用 JSON 我使用 GSON 库来解析来自 API 的数据 问题是这样的 我有一个像这样的 JSON 结构 type earnings info ea
  • 在 Android 中使用 Serialized 不好吗?

    我读过很多帖子和文章 称赞 Parcelable 的速度比 Serialized 快 我已经使用两者通过意图在活动之间传递数据有一段时间了 但在两者之间切换时尚未注意到任何速度差异 我必须传输的典型数据量是 5 到 15 个嵌套对象 每个对
  • 有没有一种方法可以在一个元素上使用两个 CSS3 框阴影?

    我正在尝试在 Photoshop 模型中复制一个按钮样式 该模型上有两个阴影 第一个阴影是内部打火机框阴影 2px 第二个阴影是按钮本身外部的投影 5px 在 Photoshop 中这很简单 内阴影和投影 在 CSS 中 我显然可以拥有其中
  • SQL 键,MUL 与 PRI 与 UNI

    有什么区别MUL PRI and UNI在 MySQL 中 我正在使用以下命令进行 MySQL 查询 desc mytable 其中一个字段显示为MUL键 其他显示为UNI or PRI 我知道如果有一把钥匙PRI 每个表只能有一条记录与该
  • Bootstrap 4:如何创建一个带有手风琴的下拉菜单?

    我实际上面临一些问题 让引导手风琴在下拉菜单中工作 我用 google 搜索了很多 还在这里找到了一些 StackOverflow 线程 但它们已经有好几年了 并且依赖于 bootstrap 3 或 bootstrap 2 就像这里的这个
  • Android 和 J2ME

    谁能澄清我对 Android 编程与 J2ME 有什么关系的疑问吗 Android 开发是否属于 J2ME 平台 因为 J2ME 基本上用于移动应用程序 Android 也是如此 如果有人知道请告诉我 除了使用核心 Java 语言之外 An
  • 使用 system.data.oracleclient 构建良好的搜索查询

    我正在一个类中构造一个搜索函数 供我们的几个 asp 页面使用 这个想法很简单 从用户那里获取搜索词并在数据库中查询该项目 目前我这样做的方式是错误的 这很容易受到 SQL 注入攻击 并且ELMAH如果出现问题 就在那里拯救世界 Publi
  • WebBrowser - 无法检索和设置名为的 .asp 页面中的 HTML 元素

    这是针对 Visual Studio Express 2012 中的桌面 C 应用程序 我正在使用 webBrowser 控件登录到各个网站 但是我无法检索和设置此特定网站的属性 该网站的登录属性位于由 HTML 调用 的 asp 页面中
  • 在haskell中计算数组的长度 - 非详尽模式错误[重复]

    这个问题在这里已经有答案了 我在这里和网上进行了一般搜索 但找不到任何似乎可以回答这个问题的内容 我刚刚开始在大学的一个模块中使用 Haskell 并且在定义一个计算数组长度的函数 本质上是预先存在的长度函数 时遇到了问题 在我的讲义中 该
  • 从我的网站通过 C# 发送电子邮件

    我使用以下代码发送电子邮件 public static bool SendEmail string To string ToName string From string FromName string Subject string Bod
  • Chrome 本地主机 cookie 未设置

    我正在不同的配置中设置 ASP NET Core 身份验证 使用 Google Chrome 作为开发和测试工具 本地一切正常 但突然就停止了 我检查了 http 标头 发现Set Cookie我的里面有一个POST响应 但在下一个请求中以
  • 使用堆栈算法进行括号/括号匹配

    例如 如果括号 方括号在以下内容中匹配 等等 但如果括号 方括号不匹配 则应返回 false 例如 等等 您能检查一下这个代码吗 public static boolean isParenthesisMatch String str Sta