linkk
思路:
只是跟相邻两个字符不可以相同,所以用三个字母就可以完成填充。遍历判断就可以了。
代码:
class Solution {
public:
string modifyString(string s) {
char ans[]={'a','b','c'};
for(int i=0;i<s.size();i++){
if(s[i]=='?'){
if(i==0){
for(int j=0;j<3;j++){
if(ans[j]==s[i+1]) continue;
s[i]=ans[j];break;
}
}
else if(i==s.size()-1){
for(int j=0;j<3;j++){
if(ans[j]==s[i-1]) continue;
s[i]=ans[j];break;
}
}
else{
for(int j=0;j<3;j++){
if(ans[j]==s[i-1]||ans[j]==s[i+1]) continue;
s[i]=ans[j];break;
}
}
}
}
return s;
}
};