一、题目简介
给你一个只包含小写字母和 ? 的字符串 s,要求把所有 ? 替换成小写字母,使得最终字符串 没有任意两个连续字符相同。
题目保证一定有合法解,只需要返回任意一种合法结果。
核心难点:正确处理首尾边界 + 不能和左右字符重复。
二、我的解题思路
整体思路非常朴素:遍历字符串,遇到问号就尝试填充字母。
1.看字符是否和该位置的前一个和后一个是否相同
如果相同就继续遍历,
如果不相同将该字符赋值给该位置
2.要处理边界情况
如果该位置是s0->前一个位置不用进行比较
如果该位置是ss.size()-1->后一个位置不用进行比较
cpp
class Solution {
public:
string modifyString(string s) {
for(int i=0;i<s.size();i++)
{
if(s[i]=='?')
{
for(char j='a';j<='z';j++)
{
if(((i==0)||j!=s[i-1])&&((i==s.size()-1)||s[i+1]!=j))
{
s[i]=j;
break;
}
}
}
}
return s;
}
};