1. 程式人生 > >LeetCode刷題記錄_有效的括號

LeetCode刷題記錄_有效的括號

leet 記錄 code lee 輸出 滿足 包括 val ack

題目:

給定一個只包括 ‘(‘‘)‘‘{‘‘}‘‘[‘‘]‘ 的字符串,判斷字符串是否有效。

有效字符串需滿足:

  1. 左括號必須用相同類型的右括號閉合。
  2. 左括號必須以正確的順序閉合。

註意空字符串可被認為是有效字符串。

示例 1:

輸入: "()"
輸出: true

示例 2:

輸入: "()[]{}"
輸出: true

示例 3:

輸入: "(]"
輸出: false

示例 4:

輸入: "([)]"
輸出: false

示例 5:

輸入: "{[]}"
輸出: true

用棧的思想來解決最簡單了,可惜stack完全沒用過,用LinkedList模仿堆棧:

class Solution {
    public boolean isValid(String s) {
        LinkedList<Character> list= new LinkedList<>();
        Map<Character,Character> map = new HashMap<>();
        map.put(‘}‘,‘{‘);
        map.put(‘)‘,‘(‘);
        map.put(‘]‘,‘[‘);
        int len= s.length();
        
        for(int i=0;i<len;i++){
            Character ch = new Character(s.charAt(i));
            if(!map.containsKey(ch)||list.size()==0)
                list.addLast(ch);
            else{
                if(list.get(list.size()-1).equals(map.get(ch)))
                    list.removeLast();
                else
                    return false;
            }            
        }
       return list.isEmpty()?ture:false;
        
    }
}

感覺代碼寫的還是太醜了

LeetCode刷題記錄_有效的括號