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 }