【LeetCode20】【Valid Parentheses】

xiaoxiao2021-02-27  285

题目:

Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.

The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.

就是说要判断内容为”{“,”}”,”[“,”]”,”(“,”)”的字符串,是否一一对应,有开始有结束。

代码

1.个人思路

/**我优化几遍后的代码 * 最短用时:8ms * beats:93.67% */ public boolean isValid1(String s) { if(s.length()%2!=0||s.length()==0){return false;} Stack<Character> stack = new Stack<Character>(); for(char c:s.toCharArray()){ if(c=='('||c=='{'||c=='['){stack.push(c);} else if(stack.isEmpty()){return false;} else if(c==']'){if(stack.peek()!='['){return false;}stack.pop();} else if(c==')'){if(stack.peek()!='('){return false;}stack.pop();} else if(c=='}'){if(stack.peek()!='{'){return false;}stack.pop();} } return stack.isEmpty(); }

2.网上大神思路

/** * 网上大神思路 * 用时:10ms * beats:65.31% */ public boolean isValid2(String s){ Stack<Character> stack = new Stack<Character>(); for(char c:s.toCharArray()){ if(c=='('){stack.push(')');} else if(c=='{'){stack.push('}');} else if(c=='['){stack.push(']');} else if(stack.isEmpty()||stack.pop()!=c){return false;} } return stack.isEmpty(); }
转载请注明原文地址: https://www.6miu.com/read-2521.html

最新回复(0)