###### tags: `LeetCode`,`Java`,`Easy` # Easy-20. Valid Parentheses ### **題目連結:** [**Valid Parentheses**](https://leetcode.com/problems/valid-parentheses/) ### **解題方向** * 先建立HashMap存放測資符號,並將Key及Value設定好。 * 接著建立ArrayList當作我們的stack。 * 開始跑字串S的所有內容: 1. if: 當該值屬於key值時,push進stack,並進行下一圈。 2. else if: 當stack長度為0時,代表stack中沒有跟目前的值對應到,故return false。 3. else if: 當stack pop出來的值(Value)不等於該值,那就代表括號的順序有誤,故return false。 4. 迴圈跑完時,正常情況下stack應該都會被pop完才對,若stack中還有值則return false,反之return true。 ### **完整程式碼** ```java= import java.util.*; class Solution { public boolean isValid(String s) { HashMap<Character, Character> map = new HashMap<Character, Character>(); map.put('(',')'); map.put('{','}'); map.put('[',']'); ArrayList<Character> stack = new ArrayList<Character>(); for(int i=0;i<s.length();i++){ if(map.containsKey(s.charAt(i))){ stack.add(s.charAt(i)); }else if(stack.size()==0 || map.get(stack.remove(stack.size()-1))!=s.charAt(i)){ System.out.println(stack); return false; } } return stack.size()==0; } } ```