Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【模拟】替换所有的问号,你是怎么处理的?

【模拟】替换所有的问号,你是怎么处理的?

作者头像
利刃大大
发布于 2025-05-22 05:14:28
发布于 2025-05-22 05:14:28
6000
代码可运行
举报
文章被收录于专栏:csdn文章搬运csdn文章搬运
运行总次数:0
代码可运行

1576. 替换所有的问号

1576. 替换所有的问号

​ 给你一个仅包含小写英文字母和 '?' 字符的字符串 s,请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。

​ 注意:你 不能 修改非 '?' 字符。

​ 题目测试用例保证 '?' 字符 之外,不存在连续重复的字符。

​ 在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:s = "?zs"
输出:"azs"
解释:该示例共有 25 种解决方案,从 "azs""yzs" 都是符合题目要求的。只有 "z" 是无效的修改,因为字符串 "zzs" 中有连续重复的两个 'z'

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:s = "ubv?w"
输出:"ubvaw"
解释:该示例共有 24 种解决方案,只有替换成 "v""w" 不符合题目要求。因为 "ubvvw""ubvww" 都包含连续重复的字符。

提示:

  • 1 <= s.length <= 100
  • s 仅包含小写英文字母和 '?' 字符

解题思路

​ 从前往后遍历整个字符串,找到问号之后,就用 a ~ z 的每一个字符去尝试替换即可。只不过要注意边界的细节,具体的参考下面代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    string modifyString(string s) {
        for(int i = 0; i < s.size(); ++i)
        {
            if(s[i] == '?') // 只有问号才处理
            {
                for(int c = 'a'; c <= 'z'; ++c)
                {
                    // 要处理特殊情况,就是如果问号在首尾的话,则只需要比较另一边的字符
                    if((i == 0 || s[i - 1] != c) && (i == s.size() - 1 || s[i + 1] != c))
                    {
                        s[i] = c;
                        break;
                    }
                }
            }
        }
        return s;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法学习】模拟篇:模拟算法的原理和习题讲解
就如我们前言中所讲的那样,模拟题对算法的考察并不太深,更多的考察我们对题意的理解,所以我们在写模拟类的题时,我们可以把模拟流程画在草稿纸上,同时我们需要熟练使用各种STL容器及一些常用的容器适配器
GG Bond1
2025/03/25
1230
【算法学习】模拟篇:模拟算法的原理和习题讲解
LeetCode 316. 去除重复字母 / 1081. 不同字符的最小子序列(单调栈)
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。
Michael阿明
2021/02/19
9000
整理字符串
一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件:
利刃大大
2023/04/12
2150
深度解析算法之模拟
题目链接 给你一个仅包含小写英文字母和 '?' 字符的字符串 s,请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。
Undoom
2025/04/24
1000
深度解析算法之模拟
LeetCode 1576. 替换所有的问号
文章目录 1. 题目 2. 解题 1. 题目 给你一个仅包含小写英文字母和 '?' 字符的字符串 s, 请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:
Michael阿明
2021/02/19
1.2K0
【优选算法篇】算法江湖中的碎玉拾光——C++模拟题全解,踏步逐章细细品味
给定一个仅包含小写英文字母和 ? 字符的字符串 s,请将所有的 ? 转换为若干小写字母,使得最终的字符串不包含任何连续重复的字符。 注意:你不能修改非 ? 字符。题目保证除了 ? 字符之外,不存在连续重复的字符。 在完成所有转换(可能无需转换)后,返回最终的字符串。如果有多个解决方案,返回其中任何一个即可。
半截诗
2024/11/21
1800
【优选算法篇】算法江湖中的碎玉拾光——C++模拟题全解,踏步逐章细细品味
【C++】模拟(例题 & 学习)
模拟题目通常具有码量大、操作多、思路繁复的特点。由于它代码量大,经常会出现难以查错的情况,如果在考试中写错是相当浪费时间的。
IsLand1314
2024/10/15
1140
【C++】模拟(例题 & 学习)
【算法】模拟
模拟算法就是根据题目所给的照葫芦画瓢。 考察的是代码能力。 步骤:1.模拟算法流程(一定得自己先过一遍流程) 2.把流程转化为代码
zxctscl
2024/04/15
1170
【算法】模拟
每日算法系列【LeetCode 424】替换后的最长重复字符
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
godweiyang
2020/03/24
1K0
万能字符单词拼写 - 华为OD机试题
有一个字符串数组 words 和一个字符串 chars。假如可以用 chars 中的字母拼写出 words 中的某个"单词"(字符串),那么我们就认为你掌握了这个单词。
小土豆Yuki
2024/07/15
3090
万能字符单词拼写 - 华为OD机试题
【算法刷题指南】模拟
南桥
2024/12/30
770
【算法专题】动态规划综合篇
题目:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。
YoungMLet
2024/03/01
1340
【算法专题】动态规划综合篇
图解LeetCode——784. 字母大小写全排列(难度:中等)
给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。
爪哇缪斯
2023/05/10
2750
图解LeetCode——784. 字母大小写全排列(难度:中等)
LeetCode 1427. 字符串的左右移
给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]:
Michael阿明
2020/07/13
5180
力扣刷题篇——滑动窗口
目录  1984 题目描述✨: 解题思路✨:   代码附上✨:  2269题目描述✨: 解题思路✨: 1763题目描述✨:  解题思路✨: 代码附上✨:   💟💟前言 友友们大家好,我是你们的小王同学😗😗 今天给大家带来的是力扣刷题篇——滑动窗口 希望能给大家带来有用的知识 小王的主页:小王同学🚗 小王的gitee:小王同学🏩 小王的github:小王同学💦  1984 题目描述✨: 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给
王同学要努力
2022/12/21
3240
力扣刷题篇——滑动窗口
【C++修行之道】string类练习题
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
走在努力路上的自己
2024/07/13
1450
【C++修行之道】string类练习题
LeetCode 1392. 最长快乐前缀(KMP)
「快乐前缀」是在原字符串中既是 非空 前缀也是后缀(不包括原字符串自身)的字符串。
Michael阿明
2020/07/13
4510
【优选算法篇】模拟算法的艺术:在不确定性中找到解法(上篇)
模拟算法是一类通过模拟真实世界过程来解决问题的算法。它通过计算机模拟复杂系统的行为,帮助我们分析和解决那些难以通过解析方法直接求解的问题。模拟算法通常通过随机化、迭代、近似等技术,利用计算机的强大计算能力来获得问题的近似解。
熬夜学编程的小王
2024/12/24
1530
【优选算法篇】模拟算法的艺术:在不确定性中找到解法(上篇)
【LeetCode】830. 较大分组的位置
例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。
韩旭051
2021/01/07
4490
LeetCode 424. 替换后的最长重复字符(滑动窗口)(双指针)
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
SakuraTears
2022/01/13
4220
相关推荐
【算法学习】模拟篇:模拟算法的原理和习题讲解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验