文章目录
- 题目链接:
- 题目描述:
- 解法
- C++ 算法代码:
题目链接:
1576. 替换所有的问号
题目描述:
解法
模拟算法就是依葫芦画瓢
特点是思路简单,主要考察代码能力
模拟算法流程(一定要在草稿纸上过一遍流程,不要凭空想象)
这题字符是随便换的,只要不和相邻的重复就行。
如果
?
在最前面和最后面需要单独考虑。
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; // (i == 0 || ch != s[i - 1])检查替换后的字符是否与前一个字符不同
break; // (i == n - 1 || ch != s[i + 1])检查替换后的字符是否与后一个字符不同
}
}
}
}
return s;
}
};