ভিডিওতে দেখো — 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) == 0Java
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 →