LeetCode 20 有效的括号 java实现 算法笔记

20. 有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"输出: true

示例 2:

输入: "()[]{}"输出: true

解题思路:

使用堆栈(stack)。栈是先进后出。

对string进行遍历

遇到左括号就入栈,push

遇到右括号时就从栈里面出栈pop,如果此时的pop不是该右括号的配对左括号,并且此时堆栈为空,则是该括号字符串

最后判断栈是否为空,空即为该括号字符串有效

具体代码实现:

public boolean isValid(String s){
    char[] sc = s.toCharArray();//把字符串变成字符数组
    Stack stack = new Stack();
    for(int i=0;i

最后说一句:出栈入栈的时间复杂度为O(1),n个字符只入栈一次,所以时间复杂度为O(1) * n,就是O(N)。

空间复杂度,最坏的情况下全都入栈没有出栈,全部压在栈底,所以空间复杂度为O(N)。

 

 

 

你可能感兴趣的:(java,算法)