首页 > 其他分享 >力扣---1003. 检查替换后的词是否有效

力扣---1003. 检查替换后的词是否有效

时间:2023-05-03 21:46:30浏览次数:43  
标签:力扣 abc false deque 示例 --- 字符串 return 1003

给你一个字符串 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' 组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-word-is-valid-after-substitutions
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

栈模拟吧。

遇到 'a' , 'b', 时入栈,遇到 'c' 时出栈并判断是否依次为 'b', 'a', 如果中间遇到了栈为空的情况则直接返回 false 。

class Solution {
    public boolean isValid(String s) {
        if (s.length() % 3 != 0) {
            return false;
        }
        Deque<Character> deque = new ArrayDeque<>();
        for (int i = 0; i < s.length(); i++) {
            char tem = s.charAt(i);
            if (tem == 'c') {
                if (deque.isEmpty() || deque.removeLast() != 'b') {
                    return false;
                }
                if (deque.isEmpty() || deque.removeLast() != 'a') {
                    return false;
                }
            } else {
                deque.addLast(tem);
            }
        }
        return deque.isEmpty();
    }
}

 

标签:力扣,abc,false,deque,示例,---,字符串,return,1003
From: https://www.cnblogs.com/allWu/p/17369721.html

相关文章

  • 2023-05-03:给你一棵 二叉树 的根节点 root ,树中有 n 个节点 每个节点都可以被分配一个
    2023-05-03:给你一棵二叉树的根节点root,树中有n个节点每个节点都可以被分配一个从1到n且互不相同的值另给你一个长度为m的数组queries你必须在树上执行m个独立的查询,其中第i个查询你需要执行以下操作:从树中移除以queries[i]的值作为根节点的子树题目所......
  • linux-kubernetes(二进制部署)
    参考笔记:https://www.cnblogs.com/yinzhengjie/p/17069566.html一、环境准备准备5台机器,二进制部署K8S高可用集群:主机ipk8s-master0110.0.0.201k8s-master0210.0.0.202k8s-master0310.0.0.203k8s-node0110.0.0.204k8s-node0210.0.0.205二、K8S......
  • linux-部署harbor的https认证
    一、安装docker1.下载docker的rpm包[[email protected]~]#ll-rw-r--r--1rootroot101239922Apr1215:29docker-rpm-20_10_24.tar.gz2.解压并安装软件包[[email protected]~]#tarxfdocker-rpm-20_10_24.tar.gz[[email protected]~]#......
  • Python flask-sqlalchemy
    安装pip3installmysql-connector-pythonpipinstallflask_sqlalchemy /setting.pyclassConfigs:#数据库信息MYSQL_USER=''MYSQL_PWD=''MYSQL_HOST=''MYSQL_PORT=''DBNAME=''......
  • Python - 字典视图
    dict的实例方法.keys()、.values()、.items()分别返回dict_keys、dict_values和dict_items类的实例。这些字典视图是dict内部实现使用的数据结构的只读投影。Python2种对应的方法返回列表,重复dict中已有的数据,有一定的内存开销。另外,视图还取代了返回迭代器的旧方法>>>d......
  • vue学习 第十天(2) HTML5的新特性 ----- 语义化标签(布局标签)/ 多媒体标签(video、
    目标:能够说出3~5个HTML5新增布局和表单标签能够说出CSS3的新增特性有哪些 HTML5的新特性 HTML的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。新特性都有兼容性问题,基本是IE9+以上版本......
  • about-keeping-pets
    关于养宠物Datetime:2023-05-03T20:04+08:00Categories:Essay这是一篇很久之前就想要写的东西,但是优先级不高所以一直放着,今晚看完了《忠犬八公》,是国内翻拍的(此篇文章不是影评)。小时候我很想养一只什么,可以是猫,也可以是狗,还可以是鸟,我还记得有一篇小学课文就是讲一个小孩想......
  • vue学习 第十天(1) css高级技巧 ----CSS用户界面样式 / vertical-align属性应用
    用户界面样式 1)鼠标样式cursorli{cursor:pointer;}设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。 2、轮廓线outline给表单添加outline:0;或者outline:none;样式之后,就可以去掉默认的蓝色边......
  • 每日总结2023-05-03
    今天学习了Android中的数据传递: 发送://实例化一个新的窗口,并指定从那个窗口到哪个窗口intent=newIntent(MainActivity.this,secondwindow.class);//将数据发送到intent中intent.putExtra("name",ed_text.getText().toString().trim());//启动新窗口startActivity(in......
  • linux进程的管理和调度 --- 调度相关
    进程调度含义进程调度决定了将哪个进程进行执行,以及执行的时间。操作系统进行合理的进程调度,使得资源得到最大化的利用。在单片机上,常常使用的方式是:系统初始化---->while(1){}。(当然,单片机也可以跑类似FreeRTOS,也可以有进程切换)在带操作系统的CPU上跑的逻辑是,允许多个进程(......