標籤:out com 一個 string i++ 其他 網上 parent clear
題目
首先明確的是,可以有(()) ([])諸如此類的表達的。
然後用棧實現演算法是,較為容易的。
判斷總長度,不是2的倍數,返回false。
如果第一個是)]},返回false。
如果是( [ {則壓入棧中
如果是)則看棧頂是不是(,如果不是,那麼返回false。其他,類似。
執行完迴圈,如果棧為空白,返回true。棧不為空白,返回false。
用linkedlist實現棧。
建構函式,舉例:
LinkedList link=new LinkedList(); LinkedList<String> link=new LinkedList<String>();
注意,不能是
LinkedList<char> link=new LinkedList<char>();
這個例子是錯的。至於為什麼是錯的,我不知道。我實踐過,不對,並看到網上竟沒有這種用法,所有處理字元char時把它當作string處理吧,如本題。
方法
add方法
clear方法
clone方法
remove方法
get方法
import java.io.*;import java.util.*;public class Solution{ public static boolean isValid(String s) { int len=s.length(); if(len%2==1) return false; char[] c=s.toCharArray(); int i; LinkedList<String> linkl=new LinkedList<String>(); int index=0; if(c[0]==‘)‘||c[0]==‘]‘||c[0]==‘}‘) return false; for(i=0;i<len;i++) { switch(c[i]) { case ‘(‘:linkl.add("(");break; case ‘)‘: if(linkl.getLast()=="(") linkl.removeLast(); else return false; break; case ‘[‘:linkl.add("[");break; case ‘]‘: if(linkl.getLast()=="[") linkl.removeLast(); else return false; break; case ‘{‘:linkl.add("{");break; case ‘}‘: if(linkl.getLast()=="{") linkl.removeLast(); else return false; break; default: return false; } } if(linkl.size()==0) return true; else return false; } public static void main(String[] args) { System.out.println(isValid("(([]))[]{}")); System.out.println(isValid("()[[{}")); System.out.println(isValid("(])[]{}")); System.out.println(isValid("(()])}[}[}[]][}}[}{})][[(]({])])}}(])){)((){")); }}
我愛coding,coding使我快樂。
我愛記單詞,記單詞使我快樂。
leetcode valid parentheses(easy) /java