1. Introducción al tema
Paréntesis válidos para Leetcode 20: https://leetcode.cn/problems/valid-parentheses/
2. Ideas para resolver problemas
Esta pregunta utiliza principalmente el conocimiento de tablas hash y pilas. Debe estar muy familiarizado con el uso de hash y pilas en Java.
3. Código completo
Nota: El siguiente código es un código completo que se puede usar para la autoevaluación. Para cargar la parte ac de Likou, simplemente pegue la función 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();
}
}