给定一串仅由圆括号、方括号等组成的字符串,如果配对正确,我会尝试返回 true。 (还有一些类似的问题,但它们涉及更复杂的东西,如数组、字符串中的其他字符等)
这是我的代码,当我输入“()”时它返回 false
class Solution {
public boolean isValid(String s) {
if (s.length() < 2) {
return false;
}
for (int i = 0; i < s.length() - 1; i++) {
char char1 = s.charAt(i);
char char2 = s.charAt(i + 1);
if ((int) char1 != (int) char2) {
return false;
}
}
return true;
}
}
如有任何帮助或建议,我们将不胜感激!
最佳答案
您可以使用 stack来解决这个问题。
假设您开始循环字符串的字符并且有一个堆栈...
如果您将左括号压入堆栈,然后在相应的右括号出现时将括号从堆栈中弹出 - 您应该在字符串检查结束时得到一个空堆栈。
如果字符串循环结束时堆栈为空,则所有括号都成对。
如果堆栈为空并且还有更多字符需要检查(即循环未完成),则括号不会配对。
如果您找到一个右括号,然后从堆栈中弹出,但没有找到相应的左括号,这也意味着括号未正确配对。对于这种情况,您可以使用一些代码,例如:
private static boolean match(char fromStack, char next) {
return fromStack == '[' && next == ']' || fromStack == '{' && next == '}' || fromStack == '(' && next == ')';
}
关于java - 尝试检查有效的括号/方括号配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46918167/