跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

算法刷题:替换所有问号与提莫攻击

替换所有问号题目要求将字符串中的问号替换为小写字母,且不能与相邻字符重复;提莫攻击题目要求计算英雄被攻击后的总中毒时间。前者通过遍历字符串并尝试 a-z 字符匹配解决,后者通过比较攻击间隔与中毒持续时间分情况累加时间。两题均采用模拟策略实现。

全栈工匠发布于 2026/2/5更新于 2026/10/244K 浏览
算法刷题:替换所有问号与提莫攻击

39. 替换所有问号

题目链接:

1576. 替换所有的问号 - 力扣(LeetCode)

题目描述:

给你一个字符串 s,s 中只包含小写字母和问号。你需要将所有的问号替换为小写字母,使得最终结果中没有两个相邻的字符是相同的。

算法原理(模拟):

思路

遍历整个字符串,找到问号之后,就用 a~z 的每一个字符去尝试替换即可,确保不与前后字符重复。

模拟解法代码(C++)

class Solution {
public:
    string modifyString(string s) {
        int n = s.size();
        for (int i = 0; i < n; i++) {
            if (s[i] == '?') {
                for (char ch = 'a'; ch <= 'z'; ch++) {
                    // 当'?'在第一位或者字符不与前面元素相同
                    // 且当'?'在最后一位或者字符不与后面元素相同
                    if ((i == 0 || s[i - 1] != ch) && (i == n - 1 || s[i + 1] != ch)) {
                        s[i] = ch;
                        break;
                    }
                }
            }
        }
        return s;
    }
};

40. 提莫攻击

题目链接:

495. 提莫攻击 - 力扣(LeetCode)

题目描述:

在《英雄联盟》的世界中,有一个叫'提莫'的英雄。他的攻击可以让敌方英雄艾希进入中毒状态。当提莫攻击艾希时,艾希的中毒状态正好持续 duration 秒。请你返回艾希处于中毒状态的总秒数。

解法(模拟 + 分情况讨论):

算法思路

模拟 + 分情况讨论。计算相邻两个时间点的差值:

  • 如果差值大于等于中毒时间,说明上次中毒可以持续 duration 秒。
  • 如果差值小于中毒时间,那么上次的中毒只能持续两者的差值。

C++ 算法代码

class Solution {
public:
    int findPoisonedDuration(vector<int>& timeSeries, int duration) {
        int n = timeSeries.size(), ret = 0;
        for (int i = 1; i < n; i++) {
            if (timeSeries[i] - timeSeries[i - 1] < duration)
                ret += timeSeries[i] - timeSeries[i - 1];
            else
                ret += duration;
        }
        // 加上最后一次攻击的中毒时间
        return ret + duration;
    }
};

总结

替换所有问号(LeetCode 1576)使用模拟方法遍历字符串,遇到问号时用 a-z 字符替换,确保不与相邻字符重复;提莫攻击(LeetCode 495)通过分情况讨论计算中毒总时长:若攻击间隔大于中毒时间则累加 duration,否则累加实际间隔时间。

目录

  1. 39. 替换所有问号
  2. 思路
  3. 模拟解法代码(C++)
  4. 40. 提莫攻击
  5. 算法思路
  6. C++ 算法代码
  7. 总结

更多推荐文章

查看全部
  • GLM-ASR-Nano-2512 快速部署与中文语音识别实战
  • OpenClaw macOS 安装与配置指南
  • AI 创新孵化:视频社区作为产品试验场的价值分析
  • 红黑树插入修复全记录:从旋转到颜色调整
  • Llama3 模型深度解析:架构演进、开源生态与合成数据展望
  • Python 在 CentOS 系统上的安装、配置与部署深度指南
  • Vue 混入(Mixin)使用场景与问题及 Vue3 组合式 API 替代方案
  • OpenClaw AI 智能体平台部署与技能配置指南
  • 2025 最新大模型 LLM 学习路线图与岗位需求分析
  • SpringBoot 核心模块 Java 源码规模统计
  • Python 兼职实战指南:从爬虫开发到数据分析变现路径
  • C/C++中的信号与槽:原理、实现、优化与高阶应用
  • 行星减速器原理、减速比计算与 C++ 实现
  • DeepSeek 结合通义万相制作 AI 视频实战指南
  • 数据分析师的核心职责与工作流程解析
  • Ubuntu 24.04 安装 PostgreSQL
  • DeepSeek-R1 本地可视化运行指南:支持多模型接入与 API 配置
  • Rust 异步测试与调试的实践指南
  • 基于 n8n 与 MaaS 平台的智能写作工作流实战指南
  • Spring Cloud Tencent 适配 Spring Boot 3 及 Java 17 升级指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online