题解 CF1144A 【Diverse Strings】

推广博客:https://www.luogu.com.cn/blog/332914/

本题很容易想到排序,将该字符串排序后每两个相减,不为 1 就是 No,否则就是 Yes

那么如何判重?根本不用判!如果有重复的排序后肯定是相邻,相减不为1,所以得到 No

代码:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        string s;
        cin >> s;
        sort(s.begin(), s.end());
        for(register string::iterator it = s.begin(); it != s.end() - 1; ++it)
        {
            if(*(it + 1) - *it != 1)
            {
                cout << "No\n";
                goto Flag;
            }
        }
        cout << "Yes\n";
        Flag:{}
    }
    return 0;
}
posted @ 2021-01-02 18:48  HappyBobb  阅读(9)  评论(0)    收藏  举报  来源