Думаю, вы решаете LeetCode 20 , что позволяет немного упростить свой код. Например, return stack.isEmpty();
будет достаточно для вашего оператора return
.
Вот более читаемые версии:
Java
class Solution {
public boolean isValid(String baseString) {
Stack<Character> stack = new Stack<Character>();
for (char character : baseString.toCharArray()) {
if (character == '(')
stack.push(')');
else if (character == '{')
stack.push('}');
else if (character == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != character)
return false;
}
return stack.isEmpty();
}
}
C ++
class Solution {
public boolean isValid(String baseString) {
Stack<Character> stack = new Stack<Character>();
for (char character : baseString.toCharArray()) {
if (character == '(')
stack.push(')');
else if (character == '{')
stack.push('}');
else if (character == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != character)
return false;
}
return stack.isEmpty();
}
}
Python
class Solution:
def isValid(self, base_string):
memo = {')': '(', '}': '{', ']': '['}
stack = [0]
for character in base_string:
if character in memo:
if stack.pop() != memo[character]:
return False
else:
stack.append(character)
return stack == [0]
Ссылка
Решение