作者Rushia (みけねこ的鼻屎)
看板Marginalman
標題Re: [閒聊] 每日LeetCode
時間Mon Apr 10 22:04:09 2023
20. Valid Parentheses
給你一個s字串只包含三種刮號 (){}[],如果同種類的左刮號相鄰右刮號表示他是一
個合法刮號,如果不同種類的左刮號配對右刮號表示不合法,返回字串s是否合法。
Example :
Input: s = "()"
Output: true
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
思路:
1.刮號匹配可以用Stack處理,遇到左刮號就push,遇到右刮號就pop,如果
pop出來的刮號不匹配或是Stack為空就表示刮號非法。
Java Code:
----------------------------------------------------------------------
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
} else if (c == ')' && stack.pop() != '(') {
return false;
} else if (c == '}' && stack.pop() != '{') {
return false;
} else if (c == ']' && stack.pop() != '[') {
return false;
}
}
}
return stack.isEmpty();
}
}
----------------------------------------------------------------------
https://i.imgur.com/acHi4CL.png
--
https://i.imgur.com/fHpKflu.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1681135451.A.32E.html
推 DDFox: 大師 04/10 22:05
推 PyTorch: 大師 04/10 22:15
推 Che31128: 大師 04/10 22:17