LeetCode:20. Valid Parentheses(Easy)
1. 原题链接
https://leetcode.com/problems/valid-parentheses/description/
2. 题目要求
给定一个字符串s,s只包含'('
, ')'
, '{'
, '}'
, '['
和 ']'。
合法:形如“()[]“、”{[()]}“
不合法:形如“([)]”、“[[((”
判断所给字符串s是否合法。
3. 解题思路
对字符串s转换成字符数字进行遍历。
利用栈,遇到左半边字符:'('、'['、'{'时,将其对应的右半边字符进行入栈。遇到不是左半边字符时进行出栈操作,并对出栈的字符和当前遍历到的字符进行比较。二者相同,则继续遍历,不同则返回false;
最后对栈进行判空操作,为空则字符串s合法,返回true;否则s不合法,返回false。
4. 代码实现
import java.util.Stack; public class ValidParentheses20 { public static void main(String[] args) { System.out.println(ValidParentheses20.isValid("[(])")); } public static boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (char c : s.toCharArray()) { if (c == '(') stack.push(')'); else if (c == '[') stack.push(']'); else if (c == '{') stack.push('}'); else if (stack.isEmpty() || stack.pop() != c) return false; } return stack.isEmpty(); } }