2 solutions
-
1
我觉得是简单题 不知道为啥新生赛的时候大家都没写怎么出来,可能是字符串这块还没咋学,下面放简单好写代码 这是我用c写的
思路
题意:每凑齐26个字母就出现一次,那么出现次数就是26个字母中拥有最少的那个。将字符串存进数组,然后记得另创一个b数组来存各个字母拥有的次数。将字符串从头到尾遍历,每遍历一个字母就将b数组对应下标为str[i]-'A'的位置的数加一,最后统计一下出现次数最少的字母的次数。
注意
读完n后要getchar();下一个表示回车的字符,不然会读进字符串。
#include<stdio.h> #include<string.h> char str[1000005]; int main() { long long n,min=1e6+1; int b[30]={0}; scanf("%lld",&n); getchar(); scanf("%s",str); int l=strlen(str); for(int i=0;i<l;i++) { b[str[i]-'A']++; } for(int i=0;i<26;i++) { if(min>b[i])min=b[i]; } printf("%lld",min*n); return 0; }
Information
- ID
- 136
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 144
- Accepted
- 25
- Uploaded By