【LeetCode从零单排】No20.ValidParentheses

简介: 题目            Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.     The brackets must close in the correct order, "()" and "()[

题目

       

     Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

     The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

     这道题比较经典了,就是有点像编译器判断代码符号是否符合规则,是堆栈的一个简单应用。当遇到"{","[","("的时候入栈,如果遇到这些符号的另一半,则取栈顶比较,如果是一对就继续,不然返回false。

代码

public class Solution {
    public boolean isValid(String s) {
         if(s.length()==0) return true;
        int len=s.length();
        char[] symbolFirst={'(','{','['};
        char[] symbolSecond={')','}',']'};
        char strChar[]=s.toCharArray();     
        Stack sym=new Stack();
        for(int i=0;i<len;i++){
        	  for(int j=0;j<symbolFirst.length;j++){
        		  if(strChar[i]==symbolFirst[j]){
        		      if(len==1){
        				  return false;
        				  }
        			  sym.push(strChar[i]);
        		  }       		  
        	  }
        	  for(int k=0;k<symbolSecond.length;k++){
        		  if(strChar[i]==symbolSecond[k]){
        			  if(sym.isEmpty()){
        				  return false;
        			  }
        			  else{
        				  if(!sym.peek().equals(symbolFirst[k])){
        					  
        					  return false;   
        			      }
        				  else{
        					  sym.pop();
        				  }
        		  }
        	  }}}
        
      if(sym.isEmpty())
        {
        	return true;
        }
        else{
        	return false;
        }   
    }
}


/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/


目录
相关文章
|
算法 Java 程序员
【手绘算法】力扣 20 有效的括号(Valid Parentheses)
Hi,大家好,我是Tom。一个美术生转到Java开发的程序员。今天给大家分享的是力扣题第20题,有效的括号。在解题过程中,也会手写一些伪代码。当然,如果想要完整的源码的话,可以到我的个人主页简介中获取。 这道题呢比较简单,但是曾经成为B站的算法面试题,而且通过率只有44.5%。
82 0
|
C++
【PAT甲级 - C++题解】1024 Palindromic Number
【PAT甲级 - C++题解】1024 Palindromic Number
43 0
LeetCode 20:有效的括号 Valid Parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. 有效字符串需满足: 左括号必须用相同类型的右括号闭合。
761 0
LeetCode - 32. Longest Valid Parentheses
32. Longest Valid Parentheses  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个由'('和')'组成的字符串,求最长连续匹配子串长度.
971 0
LeetCode - 36. Valid Sudoku
36. Valid Sudoku  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个数独,判断这个数独是否合法.
914 0