题意
判断轻字母和重字母是否交替,不再赘述。
做法
先利用 p o s pos pos 进行存储每个字母是轻字母和重字母,在利用一个 f l a g flag flag 存储第一个字母的轻重情况,进行使用 f f f 判断是否满足情况,注意记得还原。
AC code
#include <bits/stdc++.h>
using namespace std;
const int maxn = 150;
int t,n;//题目中已阐述
char s[maxn];//字符串,题目中已阐述
int pos[maxn];//存储每个字母出现的个数
bool flag;//当前字母是轻字母还是重字母
bool f = true;//存储是否满足情况
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>t>>n;//输入
while(t--)
{
cin>>s;//输入字符串
for(int i = 0;i < n;i++)
{
pos[s[i]]++;//枚举每个字符个数
}
flag = pos[s[0]] > 1;//判断第一个字母是轻字母还是重字母
for(int i = 1;i < n;i++)//ps:要从1开始,应为0时已经判断了
{
if(flag == pos[s[i]] > 1)//判断同为轻字母或同为重字母
{
puts("F");//直接输出
f = false;//标记轻字母和重字母不为交替出现
break;//节约时间
}
flag = !flag;//轻字母和重字母交替,变换flag
}
if(f) puts("T");//输出
memset(pos,0,sizeof pos);//清空
f = true;//重新恢复
}
return 0;//完结,撒花
}