题意:
给出一个字符串,要求任意两个相同的字母不能相同,问这个字符串是否能有两种或者两种以上的表现形式。
思路:
简单判断一下:
1.问号在端点;
2.连续两个问号或者以上;
3.一个问号两端的字母是相同的。
不过坑点就是给出的字符串没有问号或者给出的字符串本身就是不满足条件的。
代码:
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std; int main()
{
string s; int n; cin >> n; cin >> s; int sz = s.size(); bool f = ; int cnt = ; for (int i = ;i < n;i++)
{
if (s[i] == '?') cnt++; if (i > && s[i] == s[i-] && s[i] != '?')
{
f = ;
break;
}
} if (f || cnt == )
{
printf("no\n"); return ;
} bool ff = ; for (int i = ;i < n;i++)
{
if (i == && s[i] == '?') ff = ;
if (i == n - && s[i] == '?') ff = ;
if (i > && s[i] == '?' && s[i+] == s[i-] && s[i+] != '?') ff = ;
if (i > && s[i] == '?' && s[i] == s[i-]) ff = ;
} if (ff) printf("yes");
else puts("no"); return ;
}