https://leetcode.cn/problems/valid-parentheses/
创新互联建站是专业的新巴尔虎左网站建设公司,新巴尔虎左接单;提供网站设计制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新巴尔虎左网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!题目描述题解 题解1首先这个字符串里只会包含括号,不会有其他的东西
其次,匹配的括号一定成对,但是不一定都是首尾呼应的,比如()[]{}如果我们使用双指针前后遍历是通不过的
所以,使用栈最合适,某个左括号压入栈后,最近的应该与其匹配的括号一定是在栈顶的
比如:({})
碰到:(,压入
碰到:[,压入
碰到:],弹出[,匹配
碰到:(,压入
碰到:),弹出(,匹配
碰到:{,压入
碰到:},弹出{,匹配
碰到:),弹出(,匹配
public boolean isValid(String s) {
// 定义一个栈
LinkedListstack = new LinkedList<>();
// 遍历字符串
for (int i = 0; i< s.length(); i++) {
char c = s.charAt(i);
if (c == '(') {
stack.push(')');
} else if (c == '[') {
stack.push(']');
} else if (c == '{') {
stack.push('}');
} else {
if (stack.isEmpty() || stack.pop() != c)
return false;
}
}
return stack.isEmpty();
}
题解2当然,如果题解1看着难看,也可以看看题解2,思路基本上是一样的
public boolean isValid(String s) {
Mapmap = new HashMap<>();
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
LinkedListstack = new LinkedList<>();
// 遍历字符串
for (int i = 0; i< s.length(); i++) {
char c = s.charAt(i);
// 如果都是右括号,弹出栈元素进行比较
if (c == ')' || c == ']' || c == '}') {
if (stack.isEmpty() || stack.pop() != map.get(c))
return false;
} else {
// 如果都是左括号,把元素压入栈
stack.push(c);
}
}
return stack.isEmpty();
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧