В настоящее время я пытаюсь решить действительную проблему скобки на LeetCode, в Java, которая выглядит следующим образом: < /p>
Строка s, содержащая только символы '(', ')', '{', '}', '[' и '], определить, что входная строка. />
Входная строка действительна, если:
открытые кронштейны должны быть закрыты тем же типом кронштейнов.
открытые кронштейны должны быть закрыты в правильном порядке.
Каждый закрытый кронштейн имеет соответствующий открытый кронштейн одного и того же типа "< /p>
< /blockquote>
Я следовал подсказкам, которые сказали мне использовать стек. Вот мой код: < /p>
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
Stack values = new Stack();
for (int i=0; i < s.length(); i++) {
if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
values.push(s.charAt(i));
}
if ((s.charAt(i) == ')' && values.peek() == '(') || (s.charAt(i) == ']' && values.peek() == '[') || ((s.charAt(i) == '}') && values.peek() == '{')) {
values.pop();
}
}
if (values.empty()) {
return true;
} else {
return false;
}
}
}
< /code>
Это передает все тестовые случаи, однако, когда я нажимаю, это дает мне следующую ошибку: < /p>
Java.util.emptystackexception
< /p>
at line 103, Java.base.peeel. />
at line 11, solution.isvalid
at at line 56, driversolution < /strong>. helper < /strong>
at line 86, драйвер < /strong> .main < /p>
< /> blockquote>
< /blockquote>
< /> < /> < /blockquote>
< /blockquote>
< /blockquote>
< /blockquote> java.util.stack, я видел, что при методе peek () написано: < /p>
броски:
emptystackexception - если этот стек пуст. Каким -то образом прошел тесты до этого. Как мне исправить это в моем коде?
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-i-submit