1. トピックの紹介
Leetcode 20 の有効な括弧: https://leetcode.cn/problems/valid-parentheses/
2. 問題解決のアイデア
この問題は主にハッシュ テーブルとスタックの知識を使用するため、Java でのハッシュとスタックの使用方法に精通している必要があります。
3. 完全なコード
注: 次のコードは、セルフテストに使用できる完全なコードです。Likou の ac 部分をアップロードするには、isValid 関数を貼り付けるだけです。
import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
public class Solution {
public static void main(String[] args) {
Solution obj = new Solution();
boolean res = obj.isValid("(()())");
System.out.println(res);
}
public boolean isValid(String s) {
int n = s.length();
if(n%2==1) {
return false;
}
Map<Character,Character>map = new HashMap<Character,Character>();
map.put(')', '(');
map.put('}', '{');
map.put(']', '[');
Deque<Character>stack = new LinkedList<Character>();
for(int i=0;i<s.length();i++) {
char ch = s.charAt(i);
if(map.containsKey(ch)) {
if(stack.isEmpty()||stack.peek()!=map.get(ch)) {
return false;
}
stack.pop();
}else {
stack.push(ch);
}
}
return stack.isEmpty();
}
}