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使我快乐。

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

 

posted @ 2017-07-02 14:13  天气晚来秋  阅读(191)  评论(0编辑  收藏  举报