• 庞果网:字符串的完美度


    PS:庞果好久没出新题了。--!!。

    题目:我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。 现在给定一个字符串,输出它的最大可能的完美度。 例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。

    解析:77=26*2+25*1;得出规律——1和2分别为统计的字母个数,26和25的意思是根据26来递减(每次递减1),而且大的必须乘上数量大的字母(在这题中d为2,a为1,则2必须*26,25*1,这样才能最大)。

    代码如下:

    int perfect(const char *s)
    {
    int temp[26]={
    0
    };
    int num=26;
    int sum=0;
    int i,j,k;
    for(i=0;s[i];i++)//字母放入其位置
    {
        if(s[i]>='A'&&s[i]<='Z')
        {
          temp[s[i]+32-97]++;
        }
        else temp[s[i]-97]++;
    }
    for(i=0;i<26;i++)//排序大到小
    {
        k=i;
        for(j=i+1;j<26;j++)
        {
        if(temp[j]>temp[k])
          {
            k=j;
          }
        }
    if(k!=i)
       {
        int p=temp[i];
        temp[i]=temp[k];
        temp[k]=p;
       }
    }
    for(i=0;i<26;i++)//求和26*n+25*m
    {
       if(temp[i])
       {
        sum+=temp[i]*num;
        num--;
       }
      }
    return sum;
    }

  • 相关阅读:
    构建之法阅读笔记03
    构建之法阅读笔记01
    构建之法阅读笔记02
    周总结06
    《大道至简》第一章伪代码
    《大道至简》观后感
    【leetcode】Valid Number
    【leetcode】Maximal Rectangle
    【Unity3D】Invoke,InvokeRepeating ,Coroutine 延迟调用,周期性调用
    【leetcode】Scramble String
  • 原文地址:https://www.cnblogs.com/eeason/p/3383186.html
Copyright © 2020-2023  润新知