Skip to content

Instantly share code, notes, and snippets.

@vitkarpov
Last active January 31, 2021 15:24
Show Gist options
  • Save vitkarpov/e3fd3840e48ad693a9be0feba93cfe20 to your computer and use it in GitHub Desktop.
Save vitkarpov/e3fd3840e48ad693a9be0feba93cfe20 to your computer and use it in GitHub Desktop.
Правильная скобочная последовательность (t.me/coding_interviews)
function isValid(s) {
const brackets = {
')': '(',
']': '[',
'}': '{'
};
// в качестве стека в JavaScript можно использовать обычный массив
//(если пользоваться только «разрешенными» методами push & pop)
const st = [];
for (let i = 0; i < s.length; i++) {
if (isClosedBracket(s[i])) {
if (brackets[s[i]] !== st.pop()) return false;
// это открывающая скобка, т.к. других символов по условию в строке нет
} else {
st.push(s[i]);
}
}
return st.length === 0;
}
function isClosedBracket(ch) {
return [')', ']', '}'].indexOf(ch) > -1;
}
@acanthis
Copy link

мда, если строка начинается с откр. скобки то на выходе будет всегда true...

@vitkarpov
Copy link
Author

vitkarpov commented Jan 31, 2021

@acanthis спасибо за репорт! тут как-то все очень плохо с форматированием кода: return внутри цикла, if (isClosedBracket(...)) не там закрывается — это вообще не рабочий код 🤦
Сделал новую ревизию — https://gist.github.com/vitkarpov/e3fd3840e48ad693a9be0feba93cfe20/revisions

@vitkarpov
Copy link
Author

vitkarpov commented Jan 31, 2021

@acanthis делал разбор этой задачи, там код правильный, фух. А то было б совсем странно 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment