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的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode - 32. Longest Valid Parentheses
LeetCode-Easy刷题 Valid Parentheses