zoukankan      html  css  js  c++  java
  • 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使我快乐。

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

  • 相关阅读:
    美的觉醒
    jquery中ajax使用error调试错误的方法
    VC项目开发之单文档多视图实现-非分割窗口[转]
    MFC常见问题解惑[转]
    计算机视觉、机器学习相关领域论文和源代码大集合[转]
    C++成员变量、构造函数的初始化顺序 [转]
    VC中常用的宏[转]
    (VC)解决绘图时闪烁问题的一点经验[转]
    C++的辅助工具介绍 [转]
    [GUI]界面开发类库-Ribbon风格 [转]
  • 原文地址:https://www.cnblogs.com/zhenzhenhuang/p/7105926.html
Copyright © 2011-2022 走看看