day82【Leetcode】

news2024/12/23 13:26:33

文章目录

  • 前言
  • 一、检查替换后的词是否有效(力扣1003)
  • 二、有效的括号(力扣20)【1003类似题目】
  • 每日一题:数青蛙(力扣1419)


前言

1、检查替换后的词是否有效
2、有效的括号
3、数青蛙


一、检查替换后的词是否有效(力扣1003)

题目描述:

在这里插入图片描述
示例:
在这里插入图片描述

分析:

字符a:类似左括号,直接入栈。
字符b:如果栈为空,或者栈顶不为a,则返回false,否则将栈顶修改为b
字符c:如果栈为空,或者栈顶不为b,则返回false,否则弹出栈顶。
循环结束后如果栈为空,则返回true,否则返回false;

class Solution {
    public boolean isValid(String s) {
        char[] ss = s.toCharArray();

        int i = 0;
        for(char c:ss){
            //栈顶元素不是a,但是此时栈为空
            //或者栈顶元素不是a,此时栈不为空,那么需要判断当前元素与栈顶元素之间是否相差1
            //如果相差1 那么就把栈顶元素拿出去 当前元素如果是<c 继续放入栈中
            if(c>'a' &&(i==0|| c-ss[--i]!=1 )){
                return false;
            }
            if(c<'c'){
                ss[i++] = c;
            }
        } 
        return i==0;
    }
}

二、有效的括号(力扣20)【1003类似题目】

题目描述
在这里插入图片描述

示例:
在这里插入图片描述
分析:
与上一题解法类似

class Solution {
public boolean isValid(String s) {
        char[] ss = s.toCharArray();
        char[] right = {')',']','}'};
        char[] left = {'(','[','{'};
        int i = 0;
        for(char c: ss){
            if(right[0]==c && (i==0||ss[--i]!=left[0]))
                return false;
            if(right[1]==c && (i==0||ss[--i]!=left[1]))
                return false;
            if(right[2]==c && (i==0||ss[--i]!=left[2]))
                return false;
            for(char l:left){
                if(c==l){
                    ss[i++] = c;
                }
            }

        }
        return i==0;
    }
}

每日一题:数青蛙(力扣1419)

题目描述:
在这里插入图片描述
示例:
在这里插入图片描述

分析:

croak
遍历给定的字符串:
如果当前字符是c,那么需要判断k是否在之前出现过,如果出现过,可以继续用这一只青蛙chars[c]++,chars[k]--,如果没有出现过则新开一只青蛙chars[c]++;
如果当前字符是r,那么需要判断c是否在之前出现过,如果出现过,可以继续用这一只青蛙chars[r]++,chars[c]--,如果没有出现过则不符合题目要求 直接return false;
同理 o a k 一样
最后一定要注意类似ccccccrrooaakk这种情况
需要多加一个条件

if (chars['c'-'a'] > 0 || chars['r'-'a'] > 0 || chars['o'-'a'] > 0 || chars['a'-'a'] > 0)
            return -1; // 有发出其它声音的青蛙,不符合要求
class Solution {
public int minNumberOfFrogs(String croakOfFrogs) {
        char[] chars = new char[26];
        char[] target = croakOfFrogs.toCharArray();
        for(int i=0;i<target.length;i++){
            if(target[i]=='c'){
                //先去看看有没有出现过k
                if(chars['k'-'a']==0){
                    //之前没有出现过青蛙
                    chars['c'-'a']++;
                }else{
                    //复用青蛙
                    chars['c'-'a']++;
                    chars['k'-'a']--;
                }
            }else if(target[i]=='r'){
                //先去看看有没有出现过c
                if(chars['c'-'a']==0){
                    //之前没有出现过c
                    return -1;
                }else{
                    chars['r'-'a']++;
                    chars['c'-'a']--;
                }
            }else if(target[i]=='o'){
                //先去看看有没有出现过r
                if(chars['r'-'a']==0){
                    //之前没有出现过r
                    return -1;
                }else{
                    chars['o'-'a']++;
                    chars['r'-'a']--;
                }
            }else if(target[i]=='a'){
                //先去看看有没有出现过o
                if(chars['o'-'a']==0){
                    //之前没有出现过o
                    return -1;
                }else{
                    chars['a'-'a']++;
                    chars['o'-'a']--;
                }
            }else if(target[i]=='k'){
                //先去看看有没有出现过a
                if(chars['a'-'a']==0){
                    //之前没有出现过a
                    return -1;
                }else{
                    chars['k'-'a']++;
                    chars['a'-'a']--;
                }
            }else{
                return -1;
            }
        }
        if (chars['c'-'a'] > 0 || chars['r'-'a'] > 0 || chars['o'-'a'] > 0 || chars['a'-'a'] > 0)
            return -1; // 有发出其它声音的青蛙,不符合要求
        return chars['k'-'a']==0?-1:chars['k'-'a'];
    }
}

解法二:

class Solution {
public int minNumberOfFrogs(String croakOfFrogs) {
        int res = 0;
        char[] cnt = new char[256];
        char[] target = croakOfFrogs.toCharArray();
        for(char c:target){
            cnt[c]++;
            int cnt1 = cnt['c']-cnt['r'];
            int cnt2 = cnt['r']-cnt['o'];
            int cnt3 = cnt['o']-cnt['a'];
            int cnt4 = cnt['a']-cnt['k'];
            if(cnt1<0 || cnt2<0 || cnt3<0 || cnt4<0){
                return -1;
            }
            if(c=='c'){
                res = cnt['c']-cnt['k']>res?cnt['c']-cnt['k']:res;
            }
        }
        if(cnt['c']!=cnt['r'] || cnt['c']!=cnt['o'] || cnt['c']!=cnt['a'] || cnt['c']!=cnt['k']){
            return -1;
        }
        return res;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统第三章——内存管理(中)

九月重楼二两&#xff0c;冬至蝉蜕一钱&#xff0c;煎入隔年雪煮沸&#xff0c;可治人间相思苦疾&#xff0c; 可是&#xff0c;重楼七叶一花&#xff0c;冬日何来蝉蜕&#xff0c;原是相思无解 殊不知 夏枯即为九叶重楼&#xff0c;掘地三尺寒蝉现&#xff0c;除夕子时雪&…

2022级云曦实验室考试(一)pwn

讲真&#xff0c;俺都不知道pwn是啥&#xff0c;等俺搜搜&#xff01; pwn简介&#xff1a; CTF中的pwn指的是通过通过程序本身的漏洞&#xff0c;编写利用脚本破解程序拿到主机的权限&#xff0c;这就需要对程序进行分析&#xff0c;了解操作系统的特性和相关漏洞&#xff0…

[PyTorch][chapter 35][Batch Normalize]

前言&#xff1a; Batch Norm 是深度学习里面常用的技术之一&#xff0c;主要作用是 把指定维度参数约束到范围内,有效的解决了梯度弥散 现象 ,有助于加速模型的训练速度。 问题解释 特征缩放 Feature Scaling Batch Normalization Torch API 一 问题解释 如上图,输入范…

《开箱元宇宙》爱心熊通过 The Sandbox 与粉丝建立更紧密的联系

你们有没有想过 The Sandbox 如何融入世界上最具标志性的品牌和名人的战略&#xff1f;在本期《开箱元宇宙》系列中&#xff0c;我们与 Cloudco Entertainment 的数字内容顾问 Derek Roberto 聊天&#xff0c;了解为什么爱心熊决定在 The Sandbox 中试验 web3&#xff0c;以及他…

Grpc 整合 Nacos SpringBoot 日常使用(Java版本)包括 Jwt 认证

前言 最近感到有点子迷茫&#xff0c;天天写业务代码有点麻木&#xff0c;趁着有点空闲时间去了解了下 Grpc 这个框架&#xff0c;一方面是听说他很火&#xff0c;支持多种语言。另一方面也是为了将来可能需要用到他&#xff0c;未雨绸缪一下&#xff0c;当然了本文只是基于使用…

Python数据可视化入门教程

什么是数据可视化&#xff1f; 数据可视化是为了使得数据更高效地反应数据情况&#xff0c;便于让读者更高效阅读&#xff0c;通过数据可视化突出数据背后的规律&#xff0c;以此突出数据中的重要因素&#xff0c;如果使用Python做数据可视化&#xff0c;建议学好如下这四个Pyt…

数据可视化是什么?怎么做?看这篇文章就够了

数据可视化是什么 数据可视化主要旨在借助于图形化手段&#xff0c;清晰有效地传达与沟通信息。也就是说可视化的存在是为了帮助我们更好的去传递信息。 我们需要对我们现有的数据进行分析&#xff0c;得出自己的结论&#xff0c;明确要表达的信息和主题&#xff08;即你通过…

https 建立连接过程

从真实的抓包开始 根据抓包结果可以看到 从客户端发起https 请求开始&#xff0c;主要经过以下几个过程&#xff1a; 1、tcp 三次握手 2、浏览器发送 Client Hello 到服务器 3、服务器对Hello 进行响应 4、服务器发送Server Hello 、证书、证书状态、服务器密钥&#xff0c;到…

【Linux服务】web基础与HTTP协议

web基础与HTTP协议 一、域名概述1.1域名空间结构1.2域名注册 二、网页的概念三、HTML概述3.1HTML超文本标记语言 四、Web概述4.1Web1.0与Web2.04.2静态网页4.3动态网页 五、HTTP协议概述5.1HTTP协议版本5.2http请求方法5.3GET 和 POST 比较5.4HTTP状态码5.5HTTP请求流程 一、域…

无代码开发:让程序员更高效,让非编程人员也能参与

说起无代码开发&#xff0c;可能大多数人的第一反应就是&#xff1a;“我不知道&#xff01;” 作为一种能快速实现复杂系统的软件开发模式&#xff0c;无代码开发目前还处于推广阶段。但在我们看来&#xff0c;无代码开发是一个很好的尝试&#xff0c;它能让程序员更高效&…

《汇编语言》- 读书笔记 - 第4章-第一个程序

《汇编语言》- 读书笔记 - 第4章-第一个程序 4.1 一个源程序从写出到执行的过程4.2 源程序程序 4.11. 伪指令1.1 segment ends 声明段1.2 end 结束标记1.3 assume 关联 2. 源程序中的“程序”3. 标号4. 程序的结构5. 程序返回6. 语法错误和逻辑错误 4.3 编辑源程序4.4 编译4.5 …

Electron 我与你,今天不谈技术谈感情!

目录 前言一、无知二、初见三、再见四、相遇五、行动总结 前言 今天不谈技术&#xff0c;谈谈我和 Electron 的缘分。可能有人觉得&#xff0c;或许有些人认为&#xff0c;和一个框架谈感情这不是疯了吗&#xff1f;但是&#xff0c;我相信每个开发者都会有同样的经历&#xf…

数字化浪潮下,运维绕不开的需求升级

伴随企业数据中心规模化、复杂度、设备多样性的发展&#xff0c;运维也迎来史无前例的巨大挑战&#xff0c;运维的重要性被推向高点&#xff0c;对运维平台而言无疑是最好的时代&#xff0c;充分利用大数据和人工智能技术融合来解决实际问题&#xff0c;建立数据要素全周期管理…

XSS基础环境及实验演示教程(适合新手)

目录 前言 环境说明&#xff1a; 1、轻量级 Web 服务器 PHP 2、易受XSS攻击的PHP程序 3、非持久性 XSS 攻击 4、窃取会话cookie 5 注入表单窃取密码 前言 花了一点时间&#xff0c;做了一个“XSS基础环境及实验演示教程”&#xff0c;当然教程很简单&#xff0c;适合刚接触和安…

Electron 如何创建模态窗口?

目录 前言一、模态窗口1.Web页面模态框2.Electron中的模态窗口3.区分父子窗口与模态窗口 二、实际案例使用总结 前言 模态框是一种常用的交互元素&#xff0c;无论是在 Web 网站、桌面应用还是移动 APP 中&#xff0c;都有其应用场景。模态框指的是一种弹出窗口&#xff0c;它…

leetcode 1383. Maximum Performance of a Team(团队的最大performance)

n个工程师&#xff0c;长度为n的speed数组和efficiency数组。 每次最多选k个工程师&#xff0c;取出k个对应的speed和efficiency数字。 performancesum(k个speed) ✖ min(k个efficiency) 可以理解为k个人一起干&#xff0c;效率按最慢的人算&#xff08;一个环节干不完其他人都…

Linux——IO之系统接口+文件描述符详解

IO 文件再次理解系统接口文件操作理解文件描述符 fd 文件再次理解 文件 文件内容 文件属性 其中文件属性也是数据–>即便你创建一个空文件&#xff0c;其也是要占据磁盘攻坚的。 文件操作 文件内容的操作 文件属性的操作 有可能在操作文件的过程中即改变文件的内容&…

Linux---echo命令、反引号`、tail命令、重定向符

1. echo命令 可以使用echo命令在命令行内输出指定内容 语法&#xff1a;echo 输出的内容 无需选项&#xff0c;只有一个参数&#xff0c;表示要输出的内容&#xff0c;复杂内容可以用 ”” 包围 带有空格或 \ 等特殊符号&#xff0c;建议使用双引号包围。 如果不使用双引号…

华为OD机试真题 Java 实现【统计匹配的二元组个数】【2023Q2 200分】

一、题目描述 给定两个数组A和B&#xff0c;若数组A的某个元素A[i]与数组B中的某个元素B[j]满足 A[i] B[j]&#xff0c;则寻找到一个值匹配的二元组(i, j)。 请统计在这两个数组A和B中&#xff0c;一共存在多少个这样的二元组。 二、输入描述 第一行输入数组A的长度M&…

复习之[ 查询帮助 ] 和 [ 输入输出管理 ]

1.查询命令用途--whatis # whatis 命令 : 查询命令的用法 -如果结果出现nothing , 有两种情况&#xff1a; &#xff08;1&#xff09;查询数据库没有更新&#xff0c;此时输入命令 mandb更新数据库即可。 &#xff08;2&#xff09;查询的命令不存在。 2.获得命令的简要帮…