原题链接:https://vjudge.net/problem/CodeForces-1144A
#include<bits/stdc++.h> using namespace std; int n ; string s ; int flag1 = 1; int flag2 = 1; map<char,int>mp; //用于记录是否有重复的字母; int main() { cin>>n; while(n--) { flag1 = 1; //flag1是用于标记是否有重复的,现在假设没有重复的,置flag=1; flag2 = 1; //flag2是用于记录是否连续; cin>>s; sort(s.begin(),s.end()); //将字符串排序,从小到大 for(int i = 0 ; i < s.size(); i++) { mp[s[i]]++; //看是否有重复的;先记录下每个字母的个数; } for(int i = 'A'-'0'; i <= 'Z'-'0'; i++) { if(mp[i]>1) { //字母有重复; flag1 = 0; //将flag1 置为0; mp[i] = 0; } } for(int i = 1 ; i < s.size() ; i++) { if((s[i]-'0')!=(s[i-1]-'0')+1) { //判断是否连续;如果不连续就是相邻的Ascall码相差不为1; flag2 = 0; //不连续则将flag2 置为0; } } if(flag1==0||flag2==0) { //如果字母重复或者字母不连续; cout<<"No"<<endl; } else cout<<"Yes"<<endl; } return 0; } //给定n个字符串,判断该字符串是否是连续的(每个字符只能出现一次,顺序可为乱序,且该字符串是连续的几个字符组成的)