java - 验证下一个字符是否与第一个字符相同

标签 java algorithm

我发现了一个问题,并尝试了我的逻辑,但未能找到解决方案。

这是我试图用 java 解决的问题。

对于每个左大括号(即 (、{ 或 [),都有一个相同类型(即 (matches )、{ matches } 和[ 火柴 ])。左大括号必须出现在它匹配的右大括号之前(左侧)。例如,]{}[ 是不平衡的。

在一对匹配的括号之间没有不匹配的括号。例如,({[]}) 是平衡的,但 {[}] 和 [{)] 是不平衡的。

我想编写 java 代码,它将接受这样一个大括号的字符串输入并输出是否平衡。

我无法为这种代码应用逻辑,我试过了,但它甚至没有达到预期。请提供一些逻辑。我知道这不是完成作业的网站,但我坚持这个问题的逻辑。代码片段将不胜感激。

最佳答案

这与java无关。您需要使用堆栈来跟踪遇到括号的顺序。
算法-

  1. 遍历输入字符串。
  2. 如果当前字符是左括号,则将其压入堆栈
  3. 如果是右括号,则从堆栈中弹出一个元素,如果它不是当前右括号对应的左括号,则它是不平衡的。
  4. 遍历字符串后,如果栈中有左括号则栈不平衡。

关于java - 验证下一个字符是否与第一个字符相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44350989/

相关文章:

java - 密码验证java

Java 转换实用程序库

java - 使用 Java 从文件中提取所有 HTML 标签,包括结束标签,而无需使用 Jsoup 等外部库

c# - List<T> 中使用了哪种算法来动态分配内存?

algorithm - 哪个是更大的增长顺序? (大O)

php - 列出所有可能的字母组合,8 到 64 位长的字符串

java - Android Studio错误: Could not find Android Buld Tools

java - 如何处理 log4j2 JDBCAppender 异常?

java - Big O - 适合新手

java - 执行返回键而不是就地排序的搜索的技术