题目描述:有26种任务,用大写英文字母表示,Polycarp每天完成一个任务,一旦切换任务,他不能再返回这个任务,否则会被老师怀疑,现在给定任务序列,问是否会被老师怀疑。
这太水了每次遇到切换点就判断一下是否出现即可,是否出现用vis[]数组搞一下标记就行。
#include<bits/stdc++.h> #define ll long long using namespace std; int vis[31]; string s; int main() { ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int t,n,flag; char ch; cin>>t; while(t--) { cin>>n; flag=1; cin>>s; vis[s[0]-'A']=1; for(int i=1;i<s.length();++i) { if(s[i]!=s[i-1]) { if( vis[s[i]-'A'])flag=0; vis[s[i]-'A']=1; } } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; for(int i=0;i<=26;++i) vis[i]=0; } //getchar();getchar(); return 0; }