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

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

  • 相关阅读:
    JFinal 数据库“手动”事务(提交、回滚)
    redis有序集合性能 列表、集合、有序集合
    比特币的原理
    word2vec原理总结
    xgboost 算法总结
    GBDT学习笔记
    LR 算法总结--斯坦福大学机器学习公开课学习笔记
    sklearn的基本使用
    批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
    Logistic回归计算过程的推导
  • 原文地址:https://www.cnblogs.com/zhenzhenhuang/p/7105926.html
Copyright © 2011-2022 走看看