Дана строка s
, содержащая только символы (
, )
, {
, }
, [
и ]
Определите, является ли входная строка допустимой.
Входная строка допустима, если:
Открытые скобки должны быть закрыты скобками того же типа.
Открытые скобки должны быть закрыты в правильном порядке.
Каждая закрывающая скобка имеет соответствующую открытую скобку того же типа.
Входные данные: s = “()”
Результат: true
Входные данные: s = “()[]{}”
Результат: true
Входные данные: s = “(]”
Результат: false
class Solution {
public:
bool isValid(string s) {
stack<char> st ;
char ch, top;
for (int i = 0 ; i< s.length() ; i++) {
if ((ch = s[i]) == '(' || ch == '{' || ch == '[') {
st.push(ch) ;
} else if (ch == ')' || ch == '}' || ch == ']') {
if (st.empty()) {
return false ;
}
top = st.top() ;
if((ch == ')' && top != '(')
|| (ch == '}' && top != '{')
|| (ch == ']' && top != '[')
) {
return false ;
}
st.pop() ;
}
}
return st.empty();
}
};