LeetCode演算法20:有效的括號
阿新 • • 發佈:2018-12-25
問題
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: “()”
輸出: true
示例 2:
輸入: “()[]{}”
輸出: true
示例 3:
輸入: “(]”
輸出: false
示例 4:
輸入: “([)]”
輸出: false
示例 5:
輸入: “{[]}”
輸出: true
說明
思路較為簡單,做一個先進後出的棧即可。
程式碼
public class _20ValidParentheses{ public boolean isvalid(String s){ String valid = ""; for(int i = 0; i< s.length();i++){ //String char = new String.valueOf(s.charAt(i)); String var = String.valueOf(s.charAt(i)); if(var.equals("(")){ valid = valid +"("; }else if(var.equals(")")){ if(valid.length()==0) return false; if (String.valueOf(valid.charAt(valid.length()-1)).equals("(")) { valid = valid.substring(0,valid.length()-1); }else { return false; } }else if(var.equals("{")){ valid = valid +"{"; }else if(var.equals("}")){ if(valid.length()==0) return false; if (String.valueOf(valid.charAt(valid.length()-1)).equals("{")) { valid = valid.substring(0,valid.length()-1); }else { return false; } }else if(var.equals("[")){ valid = valid +"["; }else if(var.equals("]")){ if(valid.length()==0) return false; if (String.valueOf(valid.charAt(valid.length()-1)).equals("[")) { valid = valid.substring(0,valid.length()-1); }else { return false; } }else{ System.out.println("invalid charactor"); } } if (valid.length()!=0) { return false; }else{ return true; } } public static void main(String[] arg){ _20ValidParentheses ValidParentheses = new _20ValidParentheses(); String s1 = "()"; String s2 = "()[]{}"; String s3 = "(]"; String s4 = "([)]"; String s5 = "{[]}"; /****/ System.out.println(ValidParentheses.isvalid(s1)); System.out.println(ValidParentheses.isvalid(s2)); System.out.println(ValidParentheses.isvalid(s3)); System.out.println(ValidParentheses.isvalid(s4)); System.out.println(ValidParentheses.isvalid(s5)); } }