CodeForces 1144A

原题链接: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个字符串,判断该字符串是否是连续的(每个字符只能出现一次,顺序可为乱序,且该字符串是连续的几个字符组成的)
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11630420.html