Why Did the Cow Cross the Road II (B)
题目链接:nowcoder 24079
题目
题目大意
就是给你一个 A
到 Z
所有字符都出现两次字符串,要你求多少种字符交叉在了一起。
ABAB
算是交叉在了一起,但是 ABBA
并不算。
样例输入
ABCCABDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ
样例输出
1
样例解释
在此示例中,只有母牛A和B是交叉的。
思路
一道模拟。
其实题目就是要看多少种字符满足这个条件:在两个字符之间的区域有单独的字符存在,就是有一种字符只出现了一次。
那就按着题目模拟,就可以了。
代码
#include<cstdio>
#include<cstring>
using namespace std;
char c[101];
int size = 52, times[51], ans, l, r;
int main() {
scanf("%s", &c);
for (int i = 'A'; i <= 'Z'; i++) {
l = -1;
r = -1;
for (int j = 0; j < size; j++)
if (c[j] == i) {
if (l == -1) l = j;
else {
r = j;
break;
}
}
memset(times, 0, sizeof(times));
for (int j = l + 1; j < r; j++)
times[c[j] - 'A']++;
for (int j = 0; j < 26; j++)
if (times[j] == 1) ans++;
}
printf("%d", ans / 2);
return 0;
}