我发现了一个问题,并尝试了我的逻辑,但未能找到解决方案。
这是我试图用 java 解决的问题。
对于每个左大括号(即 (、{ 或 [),都有一个相同类型(即 (matches )、{ matches } 和[ 火柴 ])。左大括号必须出现在它匹配的右大括号之前(左侧)。例如,]{}[ 是不平衡的。
在一对匹配的括号之间没有不匹配的括号。例如,({[]}) 是平衡的,但 {[}] 和 [{)] 是不平衡的。
我想编写 java 代码,它将接受这样一个大括号的字符串输入并输出是否平衡。
我无法为这种代码应用逻辑,我试过了,但它甚至没有达到预期。请提供一些逻辑。我知道这不是完成作业的网站,但我坚持这个问题的逻辑。代码片段将不胜感激。
最佳答案
这与java无关。您需要使用堆栈来跟踪遇到括号的顺序。
算法-
- 遍历输入字符串。
- 如果当前字符是左括号,则将其压入堆栈
- 如果是右括号,则从堆栈中弹出一个元素,如果它不是当前右括号对应的左括号,则它是不平衡的。
- 遍历字符串后,如果栈中有左括号则栈不平衡。
关于java - 验证下一个字符是否与第一个字符相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44350989/