Valid Parentheses leetcode java


題目

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.

 

題解:

這道題是一道很常見的老題,記得當時看嚴蔚敏的數據結構還有數據結構課上面都見過這道題,一道訓練棧的基礎題。

解題方法是:

一個個檢查給的characters,如果是左括號都入棧;如果是右括號,檢查棧如果為空,證明不能匹配,如果棧不空,彈出top,與當前掃描的括號檢查是否匹配。

全部字符都檢查完了以后,判斷棧是否為空,空則正確都匹配,不空則證明有沒匹配的。

注意:

檢查字符是用==,檢查String是用.isEqual(),因為String是引用類型,值相等但是地址可能不等。

 

代碼如下:

 

 1      public  boolean isValid(String s) {
 2          if(s.length()==0||s.length()==1)
 3              return  false;
 4 
 5         Stack<Character> x =  new Stack<Character>();
 6          for( int i=0;i<s.length();i++){
 7              if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='['){
 8                 x.push(s.charAt(i));
 9             } else{
10                  if(x.size()==0)
11                      return  false;
12                  char top = x.pop();
13                  if(s.charAt(i)==')')
14                      if(top!='(')
15                          return  false;
16                  else  if(s.charAt(i)=='}')
17                      if(top!='{')
18                          return  false;
19                  else  if(s.charAt(i)==']')
20                      if(top!='[')
21                          return  false;
22             }
23     }
24          return x.size()==0;
25 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM