Valid Parentheses(48.24%)
2016-06-22 10:02
330 查看
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.
Subscribe to see which companies asked this question
效率低的(1.35%)
上面的做法虽然容易读懂,但是效率非常低,搜了一下,推荐的做法是:
利用一个栈来保存前括号,然后有后括号来时弹出栈顶来判断。
翻译成Java大概是这样(48.24%):
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
Subscribe to see which companies asked this question
效率低的(1.35%)
public class Solution { public boolean isValid(String s) { if (s.length() % 2 != 0) { return false; } if (s.equals("")) { return true; } else { if (s.contains("()")||s.contains("[]")||s.contains("{}")) { String a = s.replaceAll("\\(\\)", ""); String b = a.replaceAll("\\[\\]", ""); String c = b.replaceAll("\\{\\}", ""); return isValid(c); } else { return false; } } } }
上面的做法虽然容易读懂,但是效率非常低,搜了一下,推荐的做法是:
利用一个栈来保存前括号,然后有后括号来时弹出栈顶来判断。
class Solution { public: bool isValid(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<char> st; for(int i = 0; i < s.size(); i++) if (s[i] == ')' || s[i] == ']' || s[i] == '}') { if (st.empty()) return false; else { char c = st.top(); st.pop(); if ((c == '(' && s[i] != ')') || (c == '[' && s[i] != ']') || (c == '{' && s[i] != '}')) return false; } } else st.push(s[i]); return st.empty(); } };
翻译成Java大概是这样(48.24%):
import java.util.Stack; public class Solution { public boolean isValid(String s) { char[] characters = s.toCharArray(); int len = characters.length; if (len % 2 != 0) { return false; } Stack<Character> lefts = new Stack<Character>(); for (int i = 0; i < len; i++) { switch (characters[i]) { case ')': if (lefts.size() == 0 || lefts.pop() != '(') return false; break; case ']': if (lefts.size() == 0 || lefts.pop() != '[') return false; break; case '}': if (lefts.size() == 0 || lefts.pop() != '{') return false; break; default: lefts.add(characters[i]); break; } } return lefts.size() == 0; } }
相关文章推荐
- LeetCode(49)-Valid Parentheses
- Error running command bat scripts that include parentheses
- 【UVA 673 Parentheses】 & 栈
- 22. Generate Parentheses
- backtracking: 22. Generate Parentheses
- Scala之小括号和花括号(Parentheses & Crurly Braces)
- 23 leetcode - Generate Parentheses
- Longest Valid Parentheses--LeetCode
- Generate Parentheses--LeetCode
- Valid Parentheses--LeetCode
- 解决tableviewCell的分割线不贴边的问题
- 点击事件
- 线程池
- halcon学习笔记——(2)HDevelop language(基本数据类型)
- Android aidl Binder框架浅析
- Golang 中的“潜规则”
- 关于火狐和IE下href="javascript:void(0)"兼容性的问题
- Python的zip函数
- 201606归纳题目清单
- Lua中强大的元方法__index详解