​力扣解法汇总1003. 检查替换后的词是否有效

news/2024/7/5 5:31:03

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个字符串 s ,请你判断它是否 有效 。

字符串 s 有效 需要满足:假设开始有一个空字符串 t = "" ,你可以执行 任意次 下述操作将 t 转换为 s :

  • 将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft + "abc" + tright,其中 t == tleft + tright 。注意,tleft 和 tright 可能为  。

如果字符串 s 有效,则返回 true;否则,返回 false

示例 1:

输入:s = "aabcbc"
输出:true
解释:
"" -> "abc" -> "aabcbc"
因此,"aabcbc" 有效。

示例 2:

输入:s = "abcabcababcc"
输出:true
解释:
"" -> "abc" -> "abcabc" -> "abcabcabc" -> "abcabcababcc"
因此,"abcabcababcc" 有效。

示例 3:

输入:s = "abccba"
输出:false
解释:执行操作无法得到 "abccba" 。

提示:

  • 1 <= s.length <= 2 * 104
  • s 由字母 'a''b' 和 'c' 组成

解题思路:

* 解题思路:
* 构建栈结构stack,
* 如果遇到a,就压栈1,代表目前栈顶为a。
* 如果遇到b并且栈顶为1时,就把栈顶改为2,代表目前栈顶为ab。
* 如果遇到c并且栈顶为2时,就把栈顶去掉,因为目前栈顶为abc,符合移除的条件。
* 如果时其它场景,则证明不匹配,返回false。
 

代码:

public class Solution1003 {

    public boolean isValid(String s) {
        Stack<Integer> stack = new Stack<>();
        char[] chars = s.toCharArray();
        for (char aChar : chars) {
            if (aChar == 'a') {
                stack.add(1);
                continue;
            }
            if (stack.size() == 0) {
                return false;
            }
            Integer peek = stack.peek();
            if (peek == 1 && aChar == 'b') {
                stack.set(stack.size() - 1, peek + 1);
                continue;
            }
            if (peek == 2 && aChar == 'c') {
                stack.pop();
                continue;
            }
            return false;
        }
        return stack.size() == 0;
    }
}


http://lihuaxi.xjx100.cn/news/1101822.html

相关文章

【JavaEE进阶】——第五节.SpringMVC学习介绍(上)(获取参数,传递参数——关于前后端传参交互的总结、from表单、Ajax数据提交)

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 目录 文章目…

《可穿戴式血压测量设备与高血压管理的新方法:数字时代》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…

从入门到精通:数据库设计指南

数据库设计是指根据特定需求和目标&#xff0c;设计和构建数据库结构和组织的过程。它是软件开发、企业管理和数据分析中最基本、最重要的部分之一。如果你是个初学者&#xff0c;想要深入了解数据库设计&#xff0c;那么这里有一份十分详细具体的学习资料&#xff0c;来帮助你…

Unity 向量

向量的基本概念 向量&#xff1a;既有大小又有方向的量叫做向量。 零向量&#xff1a;各分量都是0的向量。 归一化向量&#xff1a;方向不变&#xff0c;将向量的长度变为1。 单位向量&#xff1a;长度为1的向量(归一化后的向量)。 向量的模&#xff1a;只有长度没有方向。…

解决docker启动时报‘Error response from daemon: network xxx not found‘问题

公司近期更换了网络设备&#xff0c;网段也更换了&#xff0c;导致原来的测试服务器无法连接&#xff0c;网关强制重启后才得以解决。 服务器启动后几个docker服务没有正常重启。 执行命令查询服务状态 docker ps -a确实有几个服务停止运行了&#xff0c;于是手动执行启动命令…

thinkphp+vue+html超市零食品美食推荐系统零食购物商城网站7v281

本系统的开发使获取食品推荐系统信息能够更加方便快捷&#xff0c;同时也使食品推荐系统管理信息变的更加系统化、有序化。系统界面较友好&#xff0c;易于操作 运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vu…

项目实战——获取树形结构

获取树形结构 一、背景介绍二、 思路和方案方案一&#xff1a;使用递归查询的方式并构建树形结构方案二&#xff1a;使用临时表的方式构建树形结构使用临时表的优缺点 三、过程项目案例核心代码 四、总结五、升华 一、背景介绍 我们在开发中时常会遇到需要用到树形结构这种表示…

APSIM模型

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…