zoukankan      html  css  js  c++  java
  • 英雄会挑战失败求原因

    题目详情

    我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,

    而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。


    现在给定一个字符串,输出它的最大可能的完美度。

    例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。


    函数头部

    C

    int perfect(const char *s);

    C++

    int perfect(const string &s);

    java

    public static int perfect(String s);

    答题说明
    main函数用于方便自行编译,可不完成。
    我提交的代码
    import java.util.*;



    public  class Main {
         public  static  int perfect(String s) {
            String lowCaseString = s.toLowerCase();
             char[] chars = lowCaseString.toCharArray();
             int[] weights =  new  int[26];
             for( char c : chars){
                 int index = ( int)(c -  'a');
                 //如果该字符与'a'的差值大于25,说明不是英文字母,不处理
                 if(index > 25){
                     continue;
                }
                weights[index] += 1;
            }
            
            Arrays.sort(weights);
             int perfectValue = 0;
             for( int i = weights.length - 1 ; i > 0 ; i--){
                 if(weights[i] == 0){
                     break;
                }
                perfectValue += (weights[i] * (i + 1));
            }
             return perfectValue;
        }

        
         //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 
         public  static  void main(String args[]) 
        { 
            System.out.println(perfect( "dad"));

        } 
         //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
    }        
  • 相关阅读:
    Python学习之路2☞数据类型与变量
    Python学习之路1☞简介及入门代码
    OpenStack组件系列☞horizon搭建
    39
    38
    37
    36
    35
    33
    32
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3230807.html
Copyright © 2011-2022 走看看