A、Diverse Strings

思路:简单判断一下给定的字符串是否刚好为一个顺子即可。

AC代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <iostream>
 6 #include <algorithm>
 7 #include <iomanip>
 8 #include <complex>
 9 #include <string>
10 #include <vector>
11 #include <set>
12 #include <map>
13 #include <list>
14 #include <deque>
15 #include <queue>
16 #include <stack>
17 #include <bitset>
18 using namespace std;
19 typedef long long LL;
20 typedef unsigned long long ULL;
21 const int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; // 上右下左
22 const int mx[8] = {-1, -2, -2, -1, 1, 2, 2, 1}; // 马可走的八个方向
23 const int my[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
24 const double eps = 1e-6;
25 const double PI = acos(-1.0);
26 const int maxn = 1e5+5;
27 const int inf = 0x3f3f3f3f;
28 
29 int n, len, now, cnt[30];
30 char str[105];
31 bool flag, first;
32 map<int, int> mp;
33 
34 int main() {
35     while(cin >> n) {
36         while(n--) {
37             cin >> str;
38             memset(cnt, 0, sizeof(cnt));
39             len = strlen(str);
40             flag = first = false;
41             mp.clear();
42             for(int i = 0; i < len; ++i) ++mp[str[i] - 'a'];
43             for(map<int, int>::iterator it = mp.begin(); it != mp.end(); ++it) {
44                 if(it -> second > 1) {flag = true; break;}
45                 if(!first) first = true, now = it -> first;
46                 else if(it -> first - now != 1) {flag = true; break;}
47                 else now = it -> first;
48             }
49             puts(!flag ? "Yes" : "No");
50         }
51     }
52     return 0;
53 }
View Code

相关文章: