Java 中的有效括号问题2024 年 9 月 10 日 | 阅读 7 分钟 我们接收到一个字符串输入 inputStr。该字符串 inputStr 只包含 '[', ']', '{', '}', '(', 和 ')'。我们的任务是确定字符串 inputStr 是否有效。字符串有效需要满足以下标准。
示例 1 输入 字符串 inputStr = "(())" 输出: 输入字符串是有效字符串。 解释: 开括号已正确关闭,即顺序正确。因此,给定的字符串是有效字符串。 示例 2 输入 字符串 a1 = "(({)})" 输出: 输入字符串不是有效字符串。 解释: 花括号 { 已正确打开。但在闭合花括号 } 之前,我们有闭合圆括号 )。因此,给定的字符串不是有效字符串。 示例 3 字符串 a1 = "(({}))" 输出: 输入字符串是有效字符串。 解释: 所有括号都已正确打开和关闭。因此,给定的字符串是有效输入字符串。 示例 4 字符串 a1 = ")([{}])" 输出: 输入字符串不是有效字符串。 解释: 除一个外,所有括号都已正确打开和关闭。但是,最后一个括号是一个开着的圆括号,并且没有正确映射到闭合圆括号。因此,给定的字符串不是有效的输入字符串。 示例 5 字符串 a1 = "()(({}))(" 输出: 输入字符串不是有效字符串。 解释: 除一个外,所有括号都已正确打开和关闭。但是,最后一个括号是一个开着的圆括号,并且没有正确映射到闭合圆括号。因此,给定的字符串不是有效的输入字符串。 方法显然,每个开括号都有对应的闭括号。因此,字符串中的括号数量应该是偶数,这可以作为我们的基本情况。我们可以拒绝大小不是偶数的字符串。对于大小为偶数的字符串,我们需要检查每个开括号是否具有对应的(相同类型的)闭括号。如果可用,则字符串有效;否则无效。 要检查每个开括号,我们可以使用递归或迭代。让我们首先使用递归方法来解决这个问题。 文件名: ValidString.java 输出 The string "(())" is a valid string. The string "(({)})" is not a valid string. The string "(({}))" is a valid string. The string ")([{}])" is not a valid string. The string "()(({}))(" is not a valid string. 复杂度分析: 最多,字符串的每个字符只会被遍历一次。因此,程序的时间复杂度为 O(N)。此外,递归调用之后的语句会进入堆栈,使程序的空间复杂度为 O(N),其中 N 是输入字符串中存在的字符总数。 现在让我们看看迭代实现。 实现:使用堆栈文件名: ValidString1.java 输出 The string "(())" is a valid string. The string "(({)})" is not a valid string. The string "(({}))" is a valid string. The string ")([{}])" is not a valid string. The string "()(({}))(" is not a valid string. 复杂度分析: 该程序的时间复杂度和空间复杂度与上一个程序相同。 下一主题Java 中的 DAO 类 |
自动化的 Java 测试框架有助于自动化测试过程。开发人员可以使用这些工具和库来编写和运行他们的代码测试并分析结果。Java 测试框架定义了测试的基本结构以及整个测试周期的策略。不...
阅读 8 分钟
给定字符串 s,任务是找到可以提取的最大不重叠子字符串数量,同时确保每个选定的子字符串包含其中出现的每个字符的所有出现。以字典顺序返回子字符串列表。示例 1:输入:“abbaccd” 输出:["bb",...
阅读 4 分钟
Java 运算符是一个特殊的符号,它对多个操作数执行特定的操作并输出结果。Java 有大量的运算符,它们分为两类。第一,运算符的性能基于其操作数的数量...
阅读 3 分钟
在编程世界中,解决问题的能力至关重要。它们可以帮助开发人员应对复杂的场景并提出有效的解决方案。一个这样引人入胜的问题是“回旋镖数量”问题,它挑战程序员在一个数组中找到回旋镖安排的数量。在本文中,我们...
阅读 4 分钟
? 微服务架构近年来获得了极大的普及,提供了一种可扩展且灵活的构建和部署应用程序的方法。基于微服务的系统的一个关键方面是各个服务如何无缝地相互通信。在本节中,我们将深入探讨...
阅读 2 分钟
将偶数安排在偶数索引和奇数安排在奇数索引的过程需要将数组中的数字进行排列,以便偶数与偶数索引(0、2、4、...)对齐,奇数与奇数索引对齐...
阅读 19 分钟
多态是面向对象编程 (OOP) 中的一个基本概念。多态这个词指的是多种形式的存在。这种能力增强了代码的灵活性、模块化和可维护性。Java 中有两种类型的多态:编译时多态(静态多态)和运行时多态(动态多态)。编译时多态(静态绑定)编译时...
5 分钟阅读
Java 中的自定义类允许开发人员通过定义封装状态(属性)和行为(方法)的新类来创建自己的数据类型。这种灵活性是 Java 面向对象特性的基础,它能够创建复杂且可重用的代码。以下是有关自定义的详细指南...
5 分钟阅读
? Java,这个广阔的印度尼西亚岛屿以其丰富的文化遗产而闻名,历史上一直是多元社区和民族群体的熔炉。在这些群体中,Kalangs 占有重要地位。Kalangs 是一个独特的民族和文化社区,曾在 Java 繁荣发展,...
阅读 3 分钟
两个重要的Java类-Socket和ServerSocket-在创建网络应用程序时具有不同的功能。这些类具有独特的功能,是客户端-服务器架构的重要组成部分。在本节中,我们将讨论Socket和ServerSocket之间的区别,以及它们独特的功能和...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India