Leetcode 20 Valid Parentheses
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()" Output: true
Example 2:
Input: "()[]{}" Output: true
Example 3:
Input: "(]" Output: false
Example 4:
Input: "([)]" Output: false
Example 5:
Input: "{[]}" Output: true
這個題是簡單的字串匹配
1)
class Solution {
public boolean isValid(String s) {
if(s == null || s.length() < 1){
return true;
}else if(s.length() == 1){
return false;
}
Stack<Character> stack = new Stack<>();
for(int i = 0 ; i < s.length();i++){
if(s.charAt(i) != ')' && s.charAt(i) != ']' && s.charAt(i) != '}'){
stack.push(s.charAt(i));
}else{
if(!stack.isEmpty() && stack.peek() == '(' && s.charAt(i) == ')'){
stack.pop();
}else if(!stack.isEmpty() && stack.peek() == '[' && s.charAt(i) == ']'){
stack.pop();
}else if(!stack.isEmpty() && stack.peek() == '{' && s.charAt(i) == '}'){
stack.pop();
}else{
return false;
}
}
}
if(!stack.isEmpty()){
return false;
}else{
return true;
}
}
}
2)
class Solution {
public boolean isValid(String s) {
int top = -1;
char[] cs = s.toCharArray();
for(int i=0;i<s.length();i++){
if(top < 0 || !ism(cs[top], cs[i])){
top++;
cs[top] = cs[i];// 如果只有一種括號就不需要這行
}
else
top--;
}
return top == -1;
}
public boolean ism(char c1, char c2){
if(c1 == '(' && c2 ==')')
return true;
if(c1 == '[' && c2 ==']')
return true;
if(c1 == '{' && c2 =='}')
return true;
return false;
}
}
相關文章
- Leetcode Valid ParenthesesLeetCode
- Leetcode-Valid ParenthesesLeetCode
- Valid Parentheses leetcode javaLeetCodeJava
- Leetcode 32 Longest Valid ParenthesesLeetCode
- Leetcode-Longest Valid ParenthesesLeetCode
- leetcode 之 Longest Valid ParenthesesLeetCode
- Longest Valid Parentheses leetcode javaLeetCodeJava
- LeetCode Valid Parentheses(020)解法總結LeetCode
- [LeetCode] 32. Longest Valid ParenthesesLeetCode
- leetcode32_Longest Valid ParenthesesLeetCode
- Leetcode 20 有效的括號valid-parentheses(棧)LeetCode
- [LeetCode] Valid Parentheses 驗證括號LeetCode
- [LeetCode] Longest Valid Parentheses 最長有效括號LeetCode
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- 演算法Valid Parentheses演算法
- leetcode20-valid parentheseLeetCode
- 【leetcode】32. Longest Valid Parentheses 最長的有效匹配括號子串長度LeetCode
- Leetcode 22 Generate ParenthesesLeetCode
- Leetcode-Generate ParenthesesLeetCode
- Generate Parentheses leetcode javaLeetCodeJava
- leetcode22_Generate ParenthesesLeetCode
- LeetCode-Remove Invalid ParenthesesLeetCodeREM
- [LeetCode] Generate Parentheses 生成括號LeetCode
- Leetcode Valid NumberLeetCode
- Leetcode Valid AnagramLeetCode
- Leetcode Valid SudokuLeetCode
- Leetcode - 022. Generate ParenthesesLeetCode
- LeetCode-Different Ways to Add ParenthesesLeetCode
- Leetcode 36 Valid SudokuLeetCode
- Leetcode Valid PalindromeLeetCode
- Leetcode-Valid SudokuLeetCode
- Leetcode-Valid NumberLeetCode
- Valid Sudoku leetcode javaLeetCodeJava
- Valid Number leetcode javaLeetCodeJava
- LeetCode-Valid PalindromeLeetCode
- Valid Palindrome leetcode javaLeetCodeJava
- LeetCode Generate Parentheses(022)解法總結LeetCode
- 【LeetCode從零單排】No22.Generate ParenthesesLeetCode