2 solutions

  • 1
    @ 2021-10-25 19:12:43

    我觉得是简单题 不知道为啥新生赛的时候大家都没写怎么出来,可能是字符串这块还没咋学,下面放简单好写代码 这是我用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