leetcode valid parentheses(easy) /java

Posted 天气晚来秋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode valid parentheses(easy) /java相关的知识,希望对你有一定的参考价值。

题目如图

首先明确的是,可以有(()) ([])诸如此类的表达的。

然后用栈实现算法是,较为容易的。

判断总长度,不是2的倍数,返回false。

如果第一个是)]},返回false。

如果是( [  {则压入栈中

如果是)则看栈顶是不是(,如果不是,那么返回false。其他,类似。

执行完循环,如果栈为空,返回true。栈不为空,返回false。

 

用linkedlist实现栈。

构造函数,举例:

    LinkedList link=new LinkedList();
    LinkedList<String> link=new LinkedList<String>();

注意,不能是

    LinkedList<char> link=new LinkedList<char>();

这个例子是错的。至于为什么是错的,我不知道。我实践过,不对,并看到网上竟没有这种用法,所有处理字符char时把它当作string处理吧,如本题。

 

方法

add方法

clear方法

 

clone方法

 

remove方法

get方法

 

import java.io.*;
import java.util.*;

public class Solution
{
    public static boolean isValid(String s) {
        int len=s.length();
        if(len%2==1)
            return false;
        char[] c=s.toCharArray();
        int i;
        LinkedList<String> linkl=new LinkedList<String>();
        int index=0;
        if(c[0]==\')\'||c[0]==\']\'||c[0]==\'}\')
            return false;
        for(i=0;i<len;i++)
        {
            switch(c[i])
            {
                case \'(\':linkl.add("(");break;
                case \')\':
                    if(linkl.getLast()=="(")
                        linkl.removeLast();
                    else
                        return false;
                    break;
                case \'[\':linkl.add("[");break;
                case \']\':
                    if(linkl.getLast()=="[")
                        linkl.removeLast();
                    else
                        return false;
                    break;
                case \'{\':linkl.add("{");break;
                case \'}\':
                    if(linkl.getLast()=="{")
                        linkl.removeLast();
                    else
                        return false;
                    break;
                default: return false;
            }
        }
        if(linkl.size()==0)
            return true;
        else
            return false;
    }
    public static void main(String[] args)
    {
        System.out.println(isValid("(([]))[]{}"));
        System.out.println(isValid("()[[{}"));
        System.out.println(isValid("(])[]{}"));
        System.out.println(isValid("(()])}[}[}[]][}}[}{})][[(]({])])}}(])){)((){"));
    }
}

 

我爱coding,coding使我快乐。

我爱记单词,记单词使我快乐。

 

以上是关于leetcode valid parentheses(easy) /java的主要内容,如果未能解决你的问题,请参考以下文章

leetcode20. Valid Parentheses

LeetCode - 32. Longest Valid Parentheses

leetcode 20 Valid Parentheses

LeetCode-Easy刷题 Valid Parentheses

LeetCode OJ 20Valid Parentheses

LeetCode算法Valid Parentheses