
正文
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();
}
}






