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;
    }
    
    • 0
      @ 2021-10-22 19:26:42

      据说是签到

      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      map <char,ll> ma;
      int main(){
      	ll n,ans=0x3f3f3f3f;
      	string s; 
      	cin>>n>>s;
      	for(int i=0;i<s.size();i++) ma[s[i]]++;
      	for(int i=0;i<26;i++) ans=min(ma['A'+i],ans);
      	cout<<ans*n;
          return 0;
      }
      
      • 1

      Information

      ID
      136
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      8
      Tags
      # Submissions
      144
      Accepted
      25
      Uploaded By