题解 | #牛群的秘密通信#
牛群的秘密通信
https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af
知识点:栈
这道题属于栈的基本题目,只需要考虑三种括号的匹配。共有两种情况:
1.出现左括号,需要入栈,等待后续相应右括号的匹配
2.出现右括号,查看当前栈顶是否是对应的左括号,若不是,则匹配失败直接返回,若是,则左右括号匹配,将左括号出栈
最终遍历所有字符后,若栈不为空,则说明有多余左括号未匹配,则匹配失败,若栈为空,则匹配成功。
Java题解如下:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean is_valid_cow_communication (String s) {
// write code here
Deque<Character> stack = new ArrayDeque<>();
Map<Character, Character> map = new HashMap<>();
map.put(')', '(');
map.put('}', '{');
map.put(']', '[');
char[] c = s.toCharArray();
int n = c.length;
for(int i = 0; i < n; i++) {
if(c[i] == ')' || c[i] == '}' || c[i] == ']') {
if(stack.isEmpty() || !stack.peek().equals(map.get(c[i]))) {
return false;
}else {
stack.pop();
}
}else {
stack.push(c[i]);
}
}
return stack.isEmpty();
}
}
查看17道真题和解析
