字符串循环遍历抵消、队列的应用-649. Dota2 参议院

题目链接及描述

649. Dota2 参议院 - 力扣(LeetCode)

题目分析

        题目描述的意思:对于一个字符串循环执行抵消操作,(R的个数为1时可以使后续的一个D失效,D的个数为1时可以使后续的一个R失效)【相当于把初始字符串看作循环字符串】不断遍历,直至字符串中只剩下同一字符为止。

        初步分析,这道题目只需要设计一个死循环,在循环中每次遍历给定字符串senate,循环遍历结束后判断每次循环后生成的新字符串temp是否符合循环终止条件(只剩下同一字符),若符合循环终止条件:

  1. 新字符串temp中只剩下单一字符D,此时返回“Dire”。
  2. 新字符串temp中只剩下单一字符R,此时返回“Radiant”。

        若其不符合循环终止条件,则将遍历生成的字符串temp赋值给senate,继续进行遍历抵消操作。

本题难点:

  • 遍历过程中记录字符R和D的个数,如果RNums > 0 && ch == D,此时新遍历到的字符D可以抵消(删除,不加入新字符串temp),同时将RNums--。同理:对于DNums > 0 && ch == R,此时新遍历到的字符串R可以抵消,同时将DNums--。
    • 如果遍历过程中不会产生抵消,则遍历到ch == R对RNums++,如果遍历到ch == D对DNums++。
  • 对字符串senate遍历过程中,如果记录新生成的字符串temp是否由单一字符构成。
    • 遍历结束后再次遍历字符串temp判断是否为同一字符构成。
    • 在循环遍历外层,定义标志位RFlag = false 和 DFlag = false,遍历过程中如果temp中加入字符R则将标志位RFlag置为 true;遍历过程中如果temp中加入字符D则将标志位DFlag置为true。遍历结束后如果根据RFlag和DFlag的值判断字符串temp是否为单一字符构成。
      • RFlag == true && DFlag == false,由单一字符R构成。
      • RFlag == false && DFlag == true,由单一字符D构成。

代码编写

class Solution {
    public String predictPartyVictory(String senate) {
        int RNums = 0, DNums = 0;
        while(true){
            boolean RFlag = false, DFlag = false;
            String temp = "";
            for(char ch : senate.toCharArray()){
                if(ch == 'R' && DNums > 0){
                    DNums--;
                    continue;
                }
                if(ch == 'D' && RNums > 0){
                    RNums--;
                    continue;
                }
                if(ch == 'R'){
                    RNums++;
                    RFlag = true;
                }
                if(ch == 'D'){
                    DNums++;
                    DFlag = true;
                }
                temp += ch;
            }
            if(RFlag == true && DFlag == false){
                return "Radiant";
            }
            if(RFlag == false && DFlag == true){
                return "Dire";
            }
            senate = temp;
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS18首个Beta测试版发布,功能介绍附beta升级办法!

今天凌晨,一年一度的苹果WWDC24开发者大会正式开幕,发布了iOS 18、iPadOS 18、macOS Sequoia、watch OS11等新系统。 大会结束后,苹果火速发布了首个iOS 18开发者Beta版,目前有开发者资格的用户已经可以下载体验尝鲜了。 本次更新…

unity开发Hololens编辑器运行 按空格没有手

选择DictationMixedRealityInputSystemProfile 如果自定义配置文件 需要可能需要手动设置 手部模型和材质球

ClickHouse快速安装教程(MacOS)

文章目录 ClickHouse快速安装教程(MacOS)1.ClickHouse2.快速安装3.快速启动3.1.启动服务器3.2.启动客户端 4.使用案例1.配置文件2.启动CK服务3.创建数据库4.创建表5.插入数据6.查询数据 ClickHouse快速安装教程(MacOS) 1.ClickHo…

YOLO检测环境安装配置

YOLO介绍 YOLO学习手册:YOLO教程 YOLO [ˈjoʊloʊ](You Only Look Once)是一种快速而准确的目标检测算法,由Joseph Redmon等人在2016年提出。YOLO被广泛应用于计算机视觉领域,包括实时视频分析、自动驾驶、安防监控、…

Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)

我们经常会被问到这样一个问题。你接口返回的好慢呀,能不能提升一下接口响应时间啊?这个时候我们就需要去分析,为什么慢,慢在哪。而这首先应该做的就是确定接口返回时间过长确实是在服务内消耗的时间。而不是我们将请求发给网关或…

如何解决 Git 默认不区分文件名大小写和同名文件共存?

修改文件命名的大小写,不会有 git 记录 本文章的例子:将 demo.vue 文件命名改为 Demo.vue 1、在Git项目路径下执行该命令 git config core.ignorecase false (1)以上方法可以实现 git 区分 demo.vue 与 Demo.vue 文件&#xff0…

Catia零件颜色修改和透明度

可以调出这个功能 或者 可以修改透明度

2024 年 5 月区块链游戏研报:市值增长、玩家参与变迁、迷你游戏兴起

作者:stellafootprint.network 数据来源:GameFi 研究页面 2024 年 5 月,以太坊的表现因 SEC 批准现货以太坊 ETF 的初步申请而得到显著提振。区块链游戏代币的总市值达到 201 亿美元,环比上涨 6.7%。然而,尽管市值有…

[大模型]LLaMA3-8B-Instruct Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架,对 LLaMA3-8B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c…

观成科技:基于深度学习技术的APT加密流量检测与分类检测方案

一、前言 近年来APT攻击的案例屡见不鲜,给国家、企业以及个人的利益造成极大威胁。随着流量加密技术的不断成熟,许多APT组织倾向于将流量加密后进行传输,从而保护传输内容。由于加密流量的实际载荷已被加密,故采用原始的流量检测…

[大模型]Llama-3-8B-Instruct FastApi 部署调用

环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源…

RabbitMQ从入门到入土

同步与异步 同步调用 优势: 时效性强,等到结果后就返回 问题: 扩展性差 性能下降 级联失败问题 异步调用 优势: 耦合度低,扩展性强 无需等待,性能好 故障隔离,下游服务故障不影响上游 缓…

【C语言】12.C语言内存函数

文章目录 1.memcpy使用和模拟实现2.memmove使用和模拟实现3.memset函数的使用4.memcmp函数的使用 memcpy:内存拷贝 memmove:内存移动 memset:内存设置 memcmp:内存比较 1.memcpy使用和模拟实现 memcpy:内存拷贝 void…

Mysql查询分析工具Explain的使用

一、前言 作为一名合格的开发人员,与数据库打交道是必不可少的,尤其是在业务规模和数据体量大规模增长的条件下,应用系统大部分请求读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的&…

产品人生(12):从“产品生命周期管理”看如何做“职业规划”

产品生命周期管理是产品人常接触的一个概念,它是一种全面管理产品从概念构想、设计开发、生产制造、市场推广、销售使用,直至最终退役的全生命周期过程的方法论和一系列业务流程。下面我们来简单介绍下产品生命周期管理: 概念阶段&#xff1a…

MybatisPlus代码生成器使用案例

针对数据库中的实体类表,自动生成相关的pojo类,mapper,service等 1. Get-Started 基于mybatisplus,idea下载mybatisplus插件 sql文件 /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 …

面试官:MySQL也可以实现分布式锁吗?

首先说结论,可以做,但不推荐做。 我们并不推荐使用数据库实现分布式锁。 如果非要这么做,实现大概有两种。 1、锁住Java的方法,借助insert实现 如何用数据库实现分布式锁呢,简单来说就是创建一张锁表,比…

PB案例学习笔记-19制作一个图片按钮

写在前面 这是PB案例学习笔记系列文章的第19篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

MAC认证

简介 MAC认证是一种基于接口和MAC地址对用户的网络访问权限进行控制的认证方法,它不需要用户安装任何客户端软件。设备在启动了MAC认证的接口上首次检测到用户的MAC地址以后,即启动对该用户的认证操作。认证过程中,不需要用户手动输入用户名…

Leetcode3174. 清除数字

Every day a Leetcode 题目来源:3174. 清除数字 解法1:栈 用栈模拟,遇到数字就弹出栈顶,遇到字母就插入栈。 最后留在栈里的就是答案。 代码: /** lc appleetcode.cn id3174 langcpp** [3174] 清除数字*/// lc c…