給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效(LeetCode原題.20)
阿新 • • 發佈:2018-12-25
package com.company.LeetCode; import java.util.Stack; /** * 給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。 * <p> * 有效字串需滿足: * <p> * 左括號必須用相同型別的右括號閉合。 * 左括號必須以正確的順序閉合。 * <p> * 注意空字串可被認為是有效字串。 */ public class LeetCode_20 { public static boolean isValid(String s) { Stack<Character> stack = new Stack(); char[] chars = s.toCharArray(); for (char c : chars) { if (c == '(' || c == '{' || c == '[') { stack.add(c); } else { if(stack.isEmpty()) return false; if (c == ')' && stack.pop() != '(') return false; if (c == '}' && stack.pop() != '{') return false; if (c == ']' && stack.pop() != '[') return false; } } //最終符合有效字元的情況是:stack應該為空! return stack.isEmpty(); } public static void main(String[] args) { System.out.println(isValid("()")); System.out.println(isValid("(){}[]")); System.out.println(isValid("{[}]")); System.out.println(isValid("}")); } } 輸出為 true true false false