IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> LeetCode20. 有效的括号。找对象的故事 -> 正文阅读

[数据结构与算法]LeetCode20. 有效的括号。找对象的故事

题目信息

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例1:

输入:s = "()"
输出:true

示例2:

输入:s = "()[]{}"
输出:true

示例3:

输入:s = "(]"
输出:false

示例4:

输入:s = "([)]"
输出:false

解题思路

题目的意思我给大家翻译翻译:
把括号之间的匹配想象成找对象,左括号(不管它是大括号还是小括号)看成是女生,右括号看成是男生,因为男生需要主动去匹配左括号。而找对象还要讲究看对眼、有感觉。还要找离自己最近的,没有对象的女生(未匹配的左括号)。如果恰好右括号匹配了一个左括号,那么他们就算是成了,轮到下一个男生。直到所有男生都找完了。这时候如果还有剩下的人,不管是男是女。都是剩下了,就不够皆大欢喜。需要返回false。如果没有剩下的,每个人都找到自己的心上人了,那就返回true。

还有一种情况,就是上面的示例4,')'离得最近的左括号是'['。
这个男生喜欢的是黑长直,但是他最近的女生是短发。
这哥们心态炸了,不谈了,心一横,
那就都别谈了。就要返回false了。

我们来看看ASCII码对照表,发现括号的ASCII值要么是相差1,要么是相差2.这个信息后面会用到。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体到代码上,可以用栈来解决。遍历题目给的字符串,如果是左括号(女生)那就放到栈里,如果是右括号,那就是男生了。看看和栈顶的括号匹配不,如果匹配了那就弹出出栈当前栈顶的元素,如果不匹配就返回false。到最后查看栈是不是空的,如果是空的就皆大欢喜,返回true,不为空的话就返回false。回到上面ASCII表中,如果两个括号能匹配,那么他们的ASCII相差一定不大于2。知道这些就可以写代码了。


实现代码:

class Solution {
    public boolean isValid(String s) {
    Stack<Character> stack=new Stack<> ();
        for(int i=0;i<s.length ();i++){
            char ch=s.charAt (i);
            if(ch=='(' || ch=='{' || ch=='['){
                stack.add (ch);
            }else {
                if(!stack.empty () && Math.abs (stack.peek ()-ch)<=2){
                    stack.pop ();
                }else {
                    return  false;
                }
            }
        }
        return  stack.isEmpty ();
}
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:25:30  更:2021-11-18 11:25:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:53:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码