LeetCode - 有效的括號
阿新 • • 發佈:2021-06-11
前言
/**
* LeetCode 20題. 有效的括號
* 給定一個只包括 '(',')','{','}','[',']' 的字串 s ,判斷字串是否有效。
* 有效字串需滿足:
* 左括號必須用相同型別的右括號閉合。
* 左括號必須以正確的順序閉合。
*/
具體實現
- 實現類
public class Solution { /** * 有效的括號 - 自定義棧 * @param s * @return */ public static boolean isValidCustom(String s) { ArrayStack<Character> arrayStack = new ArrayStack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '[' || c == '{') { arrayStack.push(c); } else { if (arrayStack.isEmpty()) { return false; } char d = arrayStack.pop(); if (c == ')' && d != '(') { return false; } else if (c == ']' && d != '[') { return false; } else if (c == '}' && d != '{') { return false; } } } return arrayStack.isEmpty(); } /** * 有效的括號 - java Stack * @param s * @return */ public static boolean isValid(String s) { java.util.Stack<Character> characters = new java.util.Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '[' || c == '{') { characters.push(c); } else { if (characters.isEmpty()) { return false; } char d = characters.pop(); if (c == ')' && d != '(') { return false; } else if (c == ']' && d != '[') { return false; } else if (c == '}' && d != '{') { return false; } } } return characters.isEmpty(); } public static void main(String[] args) { System.out.println(isValidCustom("()")); System.out.println(isValid("(")); } }
- ArrayStack - 泛型自定義棧的實現:泛型自定義棧
.end