import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean is_valid_cow_communication (String s) {
// write code here
Map<Character, Character> map = new HashMap<>();
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
switch (c) {
case '(':
case '[':
case '{': stack.push(c); break;
case ')':
case ']':
case '}': if (stack.isEmpty() || map.get(c) != stack.pop()) return false;
}
}
return stack.isEmpty();
}
}
- 定义一个Map,存储右括号与左括号的对应关系;
- 定义一个栈S:遇到左括号就入栈,遇到右括号 c 就出栈元素 A
- 根据 c 去Map中找到对应的左括号 B,如果不等,返回 false
- 或者栈中元素空,返回false
- 最后S如果是空的,返回 true,反之false