LeetCode第20题:有效的括号
Posted itLaity
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode第20题:有效的括号相关的知识,希望对你有一定的参考价值。
生命无罪,健康万岁,我是laity。
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
LeetCode第20题:有效的括号
题目
给定一个只包括 ‘(’,‘)’,‘’,‘’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]”
输出:true
示例 3:
输入:s = “(]”
输出:false
解题
时间复杂度: O(n)
class Solution
public boolean isValid(String s)
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++)
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '')
stack.push(c);
else
//获取但不删除栈顶元素 :stack.getFirst() - c 根据ASCII码表
if (stack.size() != 0 && Math.abs(stack.getFirst() - c) <= 2)
stack.pop();
else
return false;
return stack.isEmpty();
栈 Stack 的基本使用
因为有效括号该题使用了栈的思想,所以记录一下怕自己忘记
package laity.linkedList;
import java.util.Stack;
/**
* @author: Laity
* @Project: JavaLaity
* @Package: laity.linkedList.testStack
* @Date: 2022年09月22日 11:42
* @Description: 演示栈 Stack 的基本使用
*
* 特点:先进后出
*/
public class TestStack
public static void main(String[] args)
Stack<String> stack = new Stack<>();
stack.add("jack");
stack.add("tom");
stack.add("smith");
// 取
while (stack.size() > 0)
System.out.println(stack.pop()); // pop就是出栈
全代码
/**
* @author: Laity
* @Project: JavaLaity
* @Package: LeetCode.t20.IsValid
* @Date: 2022年11月12日 19:35
* @Description: LeetCode第20题:有效的括号
*/
public class IsValid
public static boolean isValid(String s)
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++)
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '')
stack.push(c);
else
//获取但不删除栈顶元素 :stack.getFirst() - c 根据ASCII码表
if (stack.size() != 0 && Math.abs(stack.getFirst() - c) <= 2)
stack.pop();
else
return false;
return stack.isEmpty();
public static void main(String[] args)
String s = "[[[[]]]]";
System.out.println(isValid(s));
长是一种蜕变,失去了旧的,必然因为又来了新的,这就是公平。我是Laity,正在前行的Laity。
以上是关于LeetCode第20题:有效的括号的主要内容,如果未能解决你的问题,请参考以下文章