前言
聚焦算法题实战,系统讲解优选算法。通过剖析动态规划、二分法等高效策略,学会寻找最优解。内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。
1576. 替换所有的问号
题目链接: LeetCode 1576
题目描述:

示例:

解题思路
这道题的核心在于模拟替换过程。我们需要遍历字符串,遇到问号时,尝试用 'a' 到 'z' 的字符进行替换。关键约束是替换后的字符不能与前后相邻的字符重复。由于只需要避免重复,且字母表有 26 个字符,通常第一个不冲突的字符即可满足条件。
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 || ch != s[i - 1]) &&
(i == n - 1 || ch != s[i + 1])) {
s[i] = ch;
break;
}
}
}
}
s;
}
};






