31 栈的压入,弹出序列

剑指 Offer 31 栈的压入、弹出序列 💖💖感谢各位观看这篇文章,💖💖点赞💖💖、收藏💖💖、你的支持是我前进的动力!💖💖 💖💖感谢你的阅读💖,专栏文章💖持续更新!💖关注不迷路!!💖 🥝🥝 剑指 Offer 31. 栈的压入、弹出序列 🚄🚄 辅助栈 🚄🚄原地栈 阅读详情

package sort;

import java.util.Stack;

public class Test31 {

    public static void main(String[] args) {
        System.out.println(function("1", "2"));
    }

    public static boolean function(String a, String b) {

        char[] aa = a.toCharArray();
        char[] bb = b.toCharArray();
        int aindex = 0;
        Stack<Character> st = new Stack<Character>();
        for (int i = 0; i < bb.length; i++) {// 依次从bb中取出元素进行操作,如果循环走完并且栈为空,则表明匹配成功

            char temp = bb[i];// 表示本次循环要处理的数
            if (st.isEmpty() || st.peek() != temp) {// 当栈为空时或者栈顶元素不匹配时,将aa的字符串依次入栈,
                while (aindex < aa.length && aa[aindex] != temp) {
                    st.push(aa[aindex]);
                    aindex++;
                }
                if (aindex < aa.length && aa[aindex] == temp) {// 如果遇到相同元素,表示本次匹配成功,进入下次匹配
                    aindex++;
                    continue;

                } else { // 否则数组aa都已经入栈,还没有找到匹配的字符,匹配失败
                    return false;
                }

            } else if (st.peek() == temp) {// 如果与栈顶元素相同,则匹配成功,进入下次匹配

                st.pop();
            }

        }

        if (st.isEmpty()) { // 循环走完如果栈为空则表示全部匹配成功
            return true;
        }

        return false;// 栈不为空则匹配失败
    }

}
 

31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。序列中下一个要弹出的值,如果是就循环把栈顶元素弹出。序列已经到末尾,说明是一个合法的序列,否则不是。依次压入栈中,压入后检查这个数是不是。1 不能在 2 之前弹出。 阅读详情

相关推荐

华科软院研究生第一学期的事项(奖学金、学业、考试等)

奖助 研究生补助 每月500,全年共6000元 每个月月底学院会打到银行卡里 碰上开学、过年会延后发放 17年10月底发了9、10两个月的钱 18年3月底发了2、3月的钱 学业奖学金 17届全日制每人都有 按照考研最后综合成绩排名 前16 10000 前80 8000 其他 4000 大概11月底发 注意:第一年如果有挂科的话,第二年就不能参加学业奖学金评...

sjdeak的博客 3706

JZ31. 栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。

Edison's 小宇宙 1万+

MagicDraw-用例图

MagicDraw-用例图

木头征的博客 3131

剑指offer31. 栈的压入弹出序列 P168

剑指offer31. 栈的压入弹出序列 P168 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。 用辅助栈 s,nums是给定的弹出序列,inputs是压栈序列 如果栈...

lonelyVM的博客 172

SAP 资产主数据屏幕增强:对比字段追加与子屏幕/页签 2 种方案优劣

本文深入对比了SAP资产主数据(AS01/AS03)屏幕增强的两种方案:字段追加与子屏幕/页签。从技术实现、业务适配、系统维护等维度分析各自优劣,提供方案选型决策树和混合方案实践建议,帮助企业在SAP实施中做出最优选择。

weixin_28559803的博客 285

【ORB-SLAM3】使用安卓手机的摄像头运行ORB3

使用安卓手机的摄像头运行ORB-SLAM3单目

caiqidong321的博客 4996

31_栈的压入、弹出序列

package pers.lyt.java; import java.util.Stack; //题目:判断一个序列是否为栈的一个弹出序列 // 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出 //顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列 //4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可...

StackOverflow的博客 138

用MATLAB计算卡方值

然后,我们计算了期望频数,即在两个分类变量独立的情况下,每个单元格的预期频数。接下来,我们使用卡方检验的公式计算了卡方值。卡方检验是一种常用的统计方法,用于确定两个分类变量之间是否存在相关性。它基于观察到的频数和期望频数之间的差异来评估分类变量之间的独立性。在MATLAB中,我们可以使用。请注意,这只是一个简单的示例代码,用于说明如何使用MATLAB计算卡方值。在实际应用中,您可能需要根据您的具体数据和研究问题进行相应的修改和调整。在上面的代码中,我们首先创建了两个分类变量。函数显示了计算得到的卡方值。

CodeNexus的博客 2658

【LeetCode】-- 剑指 Offer 31. 栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。...............

局部变量和全局变量 270

lammps案例:扭转

扭转有两种方式,一是固定一端旋转另外一端,二是两端沿相反的方向旋转。案例为两侧旋转方式,扭转后的效果如图所示。

lammps_jiayou的博客 1199

零基础入门篇③ PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

Python从入门到精通👉零基础入门篇③

hacker707的博客 4376

Java题目详解——牛客网JZ31.栈的压入,弹出序列

假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。说明:由于是[1,2,3,4,5]的压入顺序,[4,3,5,1,2]的弹出顺序,要求4,3,5必须在1,2前压入,且1,2不能弹出,但是这样压入的顺序,1又不能在2之前弹出,所以无法形成的,返回false。输入:[1,2,3,4,5],[4,5,3,2,1]输入:[1,2,3,4,5],[4,3,5,1,2]

lil_ghost_的博客 714

【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换

1 坐标系定义及转换   首先介绍一下世界坐标系和相机坐标系之间的转换,它们之间是存在一个转换关系的。现假设空间中一点X,它在相机坐标系下的坐标是Xcamera,在世界坐标系下的坐标是Xworld。假设它通过R和t实现从相机坐标系到世界坐标系之间的转换: Xworld = RXcamera + t   那么,由上式,我们可以推得从世界坐标系向相机坐标系的转换关系(RT=R-1,所以通常直接使用RT即可): Xcamera = RTXworld - RTt   所以,两个坐标系之间的转换,需要看其具体

zeeq的博客 2万+

栈-面试题31. 栈的压入、弹出序列

解题思路: 我们使用一个栈stack来模拟该操作。按照 popped 中的顺序模拟一下出栈操作,如果符合则返回 true,否则返回 false。这里用到的贪心法则是如果栈stack的栈顶元素stack.peek()==popped 序列中下一个要 pop 的值,则应立刻将该值 pop 出来。最后检查栈是否为空。 class Solution { public boo...

a716121的专栏 285

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

剑指 Offer 31. 栈的压入、弹出序列

剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 注意:判断压栈出栈的顺序是否一致,即判断入栈时元素和出栈元素的peek()是否一致,不一致时继续入栈,一致时出栈,最后盘算stack是否为空即可。 public

weixin_46801232的博客 133

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

学习笔记 | Python版本 剑指 Offer 31. 栈的压入、弹出序列

剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。 示例 1: 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行: push(1), pu

大虎牙的博客 343

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode 剑指 Offer 31. 栈的压入、弹出序列

剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例 1: 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行: push(1), pu

Qin_酱的博客 349

[[EVD]] - 剑指 Offer 31. 栈的压入、弹出序列

题目分析:[[EVD]] - 剑指 Offer 31. 栈的压入、弹出序列https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/solution/mian-shi-ti-31-zhan-de-ya-ru-dan-chu-xu-lie-mo-n-2/ 简单描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列

風的博客 134

每日一题-剑指 Offer 31. 栈的压入、弹出序列

每日一题 - 剑指 Offer 31. 栈的压入、弹出序列 题目信息 时间: 2019-06-25 题目链接:Leetcode tag:栈 难易程度:中等 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例1: 输入:pushed

一只小菜鸡的博客 264

JZ31 栈的压入、弹出序列

将pushV中的数据逐个压入st栈中,由于出栈的顺序未定,判断是否符合popV序列,那么可能入完第一个判断不符合,再入第二个判断符合,,当st不为空时,并且当st的栈顶数据等于popV的数据时就把st的栈顶数据pop掉,有可能弹出完,下一个数据仍可能在弹出数据中,这时我们继续进行判断。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。由于作者水平不足,如有任何错误,请读者在评论区交流!

重铸自身根基的博客 633

剑指offer31 栈的压入、弹出序列

剑指offer30-AcWing-42. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两...

WangXu__的博客 155

剑指 Offer 31. 栈的压入、弹出序列 - 力扣(LeetCode)

剑指 Offer 31. 栈的压入、弹出序列 - 力扣(LeetCode)

Onwaier的博客 531

牛客_JZ31 栈的压入、弹出序列

【摘要】本文介绍了如何判断一个序列是否为栈的可能弹出顺序。给定两个整数序列pushV和popV,通过模拟栈的压入和弹出操作,使用辅助栈进行验证。算法遍历压入序列,当栈顶元素等于当前弹出序列元素时出栈,否则继续压入。最终若辅助栈为空则返回true,否则返回false。示例分析表明该算法能正确识别有效和无效的弹出序列。时间复杂度为O(n),空间复杂度为O(n)。

心动的那一刻,记忆便盛开了花 1071
上一篇: 30 包含min函数的栈
下一篇: 32 从上到下打印二叉树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值