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

手机如何建免费网站互联网公司排名 百度

手机如何建免费网站,互联网公司排名 百度,做网站开发甲方一直要求p图,网站建设企业策划书LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game) 在本篇博客中#xff0c;我们将深入探讨 LeetCode 第2038题——如果相邻两个颜色均相同则删除当前颜色。该问题涉及字符串处理与游戏策略#xff0c;旨在考察如何在给定规则下判断游戏的…LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game) 在本篇博客中我们将深入探讨 LeetCode 第2038题——如果相邻两个颜色均相同则删除当前颜色。该问题涉及字符串处理与游戏策略旨在考察如何在给定规则下判断游戏的胜负。我们将详细解析问题、探索解决方案并通过代码示例展示如何实现这一逻辑。 问题描述 背景 给定一个由 A 和 B 组成的字符串 colors每个字符代表一个颜色片段。Alice 和 Bob 在玩一个游戏他们轮流从字符串中删除颜色。Alice 先手。 游戏规则 删除规则 Alice 可以删除一个 A条件是该 A 的相邻两个颜色片段也都是 A。Bob 可以删除一个 B条件是该 B 的相邻两个颜色片段也都是 B。 限制 无法删除位于字符串两端的颜色片段因为它们没有两个相邻的颜色片段。每次删除一个颜色片段后字符串会重新连接新的相邻关系会重新建立。 胜负判定 如果一方无法进行删除操作则该玩家输掉游戏另一方获胜。假设 Alice 和 Bob 都采用最优策略判断 Alice 是否获胜。 示例 示例 1 输入: colors AAABABB 输出: true 解释: - Alice 删除中间的 A字符串变为 AABABB。 - Bob 无法进行删除操作因为没有三个连续的 B。 - Alice 获胜。示例 2 输入: colors AA 输出: false 解释: - Alice 无法进行删除操作因为字符串长度不足。 - Bob 获胜。示例 3 输入: colors ABBBBBBBAAA 输出: false 解释: - Alice 删除最后的 A字符串变为 ABBBBBBBAA。 - Bob 删除一个 B字符串变为 ABBBBBBAA。 - Alice 无法进行删除操作。 - Bob 获胜。提示 1 colors.length 10^5colors 只包含字母 A 和 B 解决方案 要判断 Alice 是否能获胜我们需要计算 Alice 和 Bob 各自能进行多少次删除操作然后比较两者的次数。 关键观察 连续字符的分组对于连续的 A 或 B计算其长度。可删除次数对于每一组连续的字符只有当长度大于等于3时才能进行删除操作。具体的删除次数为 长度 - 2。 例如连续5个 AAlice 可以进行 5 - 2 3 次删除。 总删除次数 Alice 的总删除次数为所有连续 A 组的 (长度 - 2) 之和。Bob 的总删除次数为所有连续 B 组的 (长度 - 2) 之和。 胜负判定如果 Alice 的删除次数大于 Bob 的删除次数则 Alice 获胜返回 true否则返回 false。 算法步骤 初始化两个计数器 alice_moves 和 bob_moves 分别记录 Alice 和 Bob 的可删除次数。遍历字符串 colors统计连续 A 和 B 的长度。对于每个连续的 A 或 B 组计算其可删除次数并累加到相应的计数器。最后比较 alice_moves 和 bob_moves 的值判断 Alice 是否获胜。 复杂度分析 时间复杂度O(n)其中 n 是字符串 colors 的长度。我们只需遍历一次字符串。空间复杂度O(1)仅使用了常数级别的额外空间。 代码实现 以下是基于上述思路的 Python 实现 class Solution:def winnerOfGame(self, colors: str) - bool:alice_moves 0bob_moves 0n len(colors)i 0while i n:current_char colors[i]count 1# 统计当前字符连续出现的次数while i 1 n and colors[i 1] current_char:count 1i 1# 如果连续字符数大于等于3计算可删除次数if count 3:if current_char A:alice_moves count - 2else:bob_moves count - 2i 1# Alice 必须有比 Bob 更多的删除次数才能获胜return alice_moves bob_moves代码解析 初始化 alice_moves 0 bob_moves 0 n len(colors) i 0alice_moves 和 bob_moves 分别记录 Alice 和 Bob 的可删除次数。n 是字符串的长度i 是当前遍历的索引。 遍历字符串 while i n:current_char colors[i]count 1# 统计当前字符连续出现的次数while i 1 n and colors[i 1] current_char:count 1i 1# 如果连续字符数大于等于3计算可删除次数if count 3:if current_char A:alice_moves count - 2else:bob_moves count - 2i 1对于每一个字符统计其连续出现的次数 count。如果 count 3则根据字符类型增加相应的删除次数。最后移动到下一个不同的字符。 胜负判断 return alice_moves bob_moves如果 Alice 的删除次数大于 Bob 的则 Alice 获胜返回 true否则返回 false。 示例运行 让我们通过几个示例来验证我们的算法。 示例 1 colors AAABABB solution Solution() print(solution.winnerOfGame(colors)) # 输出: True解析 连续 A 的组AAA可删除次数为 3 - 2 1。连续 B 的组B、BB均不足3个不可删除。Alice 的删除次数 1Bob 的删除次数 0。因为 1 0Alice 获胜。 示例 2 colors AA solution Solution() print(solution.winnerOfGame(colors)) # 输出: False解析 连续 A 的组AA不足3个不可删除。Alice 的删除次数 0Bob 的删除次数 0。因为 0 不是大于 0Alice 无法获胜。 示例 3 colors ABBBBBBBAAA solution Solution() print(solution.winnerOfGame(colors)) # 输出: False解析 连续 A 的组A、AAA可删除次数为 1。连续 B 的组BBBBBBB可删除次数为 7 - 2 5。Alice 的删除次数 1Bob 的删除次数 5。因为 1 小于 5Bob 获胜。 总结 我们了解到如何通过统计连续字符的数量来判断 Alice 和 Bob 各自的删除次数。关键在于识别连续的 A 和 B 组并根据规则计算可删除次数。最终通过比较两者的删除次数我们可以高效地判断游戏的胜负。
http://www.hkea.cn/news/14436261/

相关文章:

  • 后端网站开发漫画网站建设
  • 中文域名 网站专业网页制作软件都能帮助用户组织和管理
  • 哪里租服务器做网站电商网站建设小强
  • 狠狠做网站娱乐网站建设方案
  • 苏州网站设计聚尚网络智能模板网站建设收费
  • 网站怎么做才能被百度抓取到外贸网站域名赏析
  • 扁平风格网站 模板免费下载手机制作网页链接的软件
  • 长沙好玩的地方景点推荐深圳seo优化公司哪家好
  • 资源网站优化排名做游戏网站在哪里找
  • 盐城网站建设费用购物最便宜的app
  • 手机h5网站开发企业网站改版方案
  • 深圳网站定制公司网站优化意义
  • 微商手机网站制作公司哪家好企业网站开发流程简述
  • 泸州网站开发wordpress 首页显示摘要
  • lnmp wordpress 404360seo优化
  • 厦门做手机网站公司帮你做决定的网站
  • 宁波网站建站微网站栏目设置
  • 嘉兴城乡建设局网站铁岭手机网站建设
  • 什么网站下载素材做图的深圳罗湖做网站的公司哪家好
  • 灵璧做网站襄阳seo技术
  • 天津建设工程竣工备案公示网站万网网站备份
  • 网站像素大小如何设置域名
  • 建站服务网络公司廊坊seo霸屏
  • 主题商店网站设计阿里网站如何做接入
  • 一个人做网站的难度北京创意设计协会网站
  • 泰州网页网站制作wordpress本发安装
  • 装修设计培训机构seo1888网站建设
  • 微信引流神器手机电影网站怎么做网站建设与维护高职
  • 哪个网站可以做代练网店美工的技能要求
  • jsp企业网站售电公司注册条件及要求