Sign inEnroll free
NeetCode 150 / Stack
EasyStackO(n)
ভিডিওতে দেখো — YouTube @algonur_com

কোড

Python
def isValid(s: str) -> bool:
    stack = []
    pairs = {')': '(', '}': '{', ']': '['}
    for ch in s:
        if ch in '([{':
            stack.append(ch)
        elif not stack or stack[-1] != pairs[ch]:
            return False
        else:
            stack.pop()
    return len(stack) == 0
Java
public boolean isValid(String s) {
    Deque<Character> stack = new ArrayDeque<>();
    for (char ch : s.toCharArray()) {
        if (ch == '(' || ch == '[' || ch == '{')
            stack.push(ch);
        else {
            if (stack.isEmpty()) return false;
            char top = stack.pop();
            if (ch == ')' && top != '(') return false;
            if (ch == ']' && top != '[') return false;
            if (ch == '}' && top != '{') return false;
        }
    }
    return stack.isEmpty();
}
Kotlin
fun isValid(s: String): Boolean {
    val stack = ArrayDeque<Char>()
    val pairs = mapOf(')' to '(', ']' to '[', '}' to '{')
    for (ch in s) {
        if (ch in "([{") stack.addLast(ch)
        else if (stack.isEmpty() || stack.last() != pairs[ch])
            return false
        else stack.removeLast()
    }
    return stack.isEmpty()
}
C++
bool isValid(string s) {
    stack<char> st;
    for (char ch : s) {
        if (ch=='('||ch=='['||ch=='{') st.push(ch);
        else {
            if (st.empty()) return false;
            if (ch==')' && st.top()!='(') return false;
            if (ch==']' && st.top()!='[') return false;
            if (ch=='}' && st.top()!='{') return false;
            st.pop();
        }
    }
    return st.empty();
}

জটিলতা

O(n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(n)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Sliding Window Maximumপরের সমস্যাMin Stack →