LeetCode - 20. Valid Parentheses #Java

Question


Given a string containing just the characters '(' , ')' , '{' , '}' , '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

看了题目以为“[{}]"这种是不合法的,结果这题这种string是合法的。
拿到题目之前已经知道这道题要用Stack来解,就直接上LinkedList了。

Solutions


以下是鄙人的渣解,思想就是用linkedList构成一个Stack结构的桶,然后每判断一个字符

  • 是“)”,"]","}",
    • 桶为空, 扔进桶
    • 不空,判断桶的第一个字符是否为“)”,"]","}"对应的小伙伴
      • 是,删除小伙伴
      • 不是, 返回false
  • 不是“)”,"]","}, 扔进桶
public class Solution {
    public boolean isValid(String s) {
        if (s.length() % 2 != 0)
            return false;

        LinkedList<Character> list = new LinkedList();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ')' || s.charAt(i) == ']' || s.charAt(i) == '}') {
                if (list.size() > 0 && ((list.getFirst() - 'A' == s.charAt(i) - 1 - 'A')
                        || (list.getFirst() - 'A' == s.charAt(i) - 2 - 'A'))) {
                    list.removeFirst();
                } else if (list.size() > 0){
                    return false;
                } else {
                    list.addFirst(s.charAt(i));
                }
            } else {
                list.addFirst(s.charAt(i));
            }
        }

        if (list.size() > 0) {
            return false;
        } else {
            return true;
        }
    }
}

Points


  • ASCII码表
    一开始以为{},[],()在表里都是连续的,结果代码错误。实际上表里只有()是连续的,[]和{}都被第三者插足。
ascii01.png
  • LeetCode Runtime
    不是很懂LeetCode是怎么计算的,我相同的代码,试了两次一个1ms一个2ms,是不是再试一次就能达成0ms了?
屏幕快照 2016-03-16 上午10.48.08.png
屏幕快照 2016-03-16 上午10.48.22.png

TO DO


  • Stack和LinkedList
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,787评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,921评论 0 2
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,431评论 0 6
  • 一. Java基础部分.................................................
    wy_sure阅读 3,843评论 0 11