题目链接 codeforces 957 A
题意:
给个字符串,问在相邻的字符不相同的情况下,能不能有两种以上的字符串,问好可替换3个字符中的任意一个
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(){
int n, f = 0;
cin >> n;
string s;
cin >> s;
for(int i = 0; i < n; i++){
if(s[i] == '?' && (i == 0 || i == n-1)){ // 第一个或最后一个是 ? 可以生成两个
f = 1;
}
else if(i != 0 || i != n-1){
if(s[i] == '?' && s[i-1] == s[i+1] || s[i] == '?' && s[i+1] == '?'){
f = 1; // 两个相邻的? 或者是 ? 左右相同
}
}
if(s[i] != '?' && s[i] == s[i+1]){
f = 0; // 两个相邻的字符相同不是 ? 直接不符合题意
break;
}
}
if(f == 0){
cout << "NO" << endl;
}
else{
cout << "YES" << endl;
}
return 0;
}