class Solution {
public:
char returnLegalCh(char s1, char s2)
{
int a = int(s1) - 97;
int b = int(s2) - 97;
//取下一个字符
int res = (a + 1) % 26;
if (res == b)
{
res = (b + 1) % 26;
}
return char(97 + res);
}
string modifyString(string s) {
if (s.size() == 1)
{
if (s[0] == '?')
{
s[0] = 'a';
}
return s;
}
if (s[0] == '?')
{
if (s[1] == '?')
{
s[0] = 'a';
}
else
{
s[0] = returnLegalCh(s[1], s[1]);
}
}
for (int i = 1; i < s.size() - 1; i++)
{
if (s[i] == '?')
{
s[i] = returnLegalCh(s[i - 1], s[i + 1]);
}
}
if (s[s.size() - 1] == '?')
{
int tmp = s.size() - 2 >= 0 ? s.size() - 2 : -1;
s[s.size() - 1] = returnLegalCh(s[tmp], s[tmp]);
}
return s;
}
};
好像也没啥好说的,提醒下自己注意边界即可~