All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0020_valid_parentheses.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0001_0100.s0020_valid_parentheses;

// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #String #Stack
// #Data_Structure_I_Day_9_Stack_Queue #Udemy_Strings #Big_O_Time_O(n)_Space_O(n)
// #2023_08_09_Time_2_ms_(90.49%)_Space_40.1_MB_(98.14%)

import java.util.Stack;

/**
 * 20 - Valid Parentheses\.
 *
 * Easy
 *
 * Given a string `s` containing just the characters `'('`, `')'`, `'{'`, `'}'`, `'['` and `']'`, determine if the input string is valid.
 *
 * An input string is valid if:
 *
 * 1.  Open brackets must be closed by the same type of brackets.
 * 2.  Open brackets must be closed in the correct order.
 *
 * **Example 1:**
 *
 * **Input:** s = "()"
 *
 * **Output:** true 
 *
 * **Example 2:**
 *
 * **Input:** s = "()[]{}"
 *
 * **Output:** true 
 *
 * **Example 3:**
 *
 * **Input:** s = "(]"
 *
 * **Output:** false 
 *
 * **Example 4:**
 *
 * **Input:** s = "([)]"
 *
 * **Output:** false 
 *
 * **Example 5:**
 *
 * **Input:** s = "{[]}"
 *
 * **Output:** true 
 *
 * **Constraints:**
 *
 * *   1 <= s.length <= 104
 * *   `s` consists of parentheses only `'()[]{}'`.
**/
@SuppressWarnings("java:S1149")
public class Solution {
    public boolean isValid(String s) {
        Stack stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else if (c == ')' && !stack.isEmpty() && stack.peek() == '(') {
                stack.pop();
            } else if (c == '}' && !stack.isEmpty() && stack.peek() == '{') {
                stack.pop();
            } else if (c == ']' && !stack.isEmpty() && stack.peek() == '[') {
                stack.pop();
            } else {
                return false;
            }
        }
        return stack.isEmpty();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy