当前位置: 首页 > news >正文

字符串循环遍历抵消、队列的应用-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;}}
}

相关文章:

  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • 「C系列」C enum(枚举)
  • go-zero整合Excelize并实现Excel导入导出
  • pytest+requests+allure自动化测试接入Jenkins学习
  • uniapp地图选择位置
  • docker部署redis实践
  • `kubectl get pod -oyaml` 和 `kubectl describe pod`
  • C#面:什么是 Windows 服务,它的生命周期与标准的 EXE 程序有什么不同
  • 【2024算力大会分会 | SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)
  • Pydantic的BaseConfig
  • 一款优秀的下载和共享工具
  • 数值计算精度问题(浮点型和双整型累加精度测试)
  • 机器学习专题记录
  • 机器学习作业6——svm支持向量机
  • 探索AOSP中的RRO:运行时资源覆盖的奥秘
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • JS+CSS实现数字滚动
  • Laravel Mix运行时关于es2015报错解决方案
  • Spring Boot MyBatis配置多种数据库
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 深入浅出Node.js
  • 双管齐下,VMware的容器新战略
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Semaphore
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​2021半年盘点,不想你错过的重磅新书
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #职场发展#其他
  • $.proxy和$.extend
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (多级缓存)缓存同步
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (转)人的集合论——移山之道
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat批处理出现中文乱码的情况
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET delegate 委托 、 Event 事件
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 使窗口永不获得焦点
  • .NetCore 8 SwaggerGen 显示接口注析
  • .NET上SQLite的连接
  • .NET学习教程二——.net基础定义+VS常用设置
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /etc/motd and /etc/issue
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @requestBody写与不写的情况
  • @ResponseBody
  • @Transactional类内部访问失效原因详解
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [Android] Upload package to device fails #2720
  • [asp.net core]project.json(2)
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ] 2427: [HAOI2010]软件安装