字符串的完美度

字符串的完美度

题目详情:

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

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

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

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

代码:
import java.util.Arrays;

/**
 * @author huimin
 * @apiNote
 *      我们要给每个字母配一个1-26之间的整数,……求最大完美度
 */
public class Test {
    public static void main(String[] args) {
        String s = "Dad";

        int mostPerfect = mostPerfect(s);

        System.out.println(mostPerfect);// 77
    }

    public static int mostPerfect(String s){
        // 声明存储各字母数量的数组
        int[] ints = new int[26];

        // 将字母统一转为小写
        s = s.toLowerCase();

        // 算数量
        for (int i = 0; i < s.length(); i++) {
            ints[s.charAt(i) - 97]++;
        }

        // 排序
        Arrays.sort(ints);

        // 求和
        int sum = 0;
        for (int i = 25; i >= 0; i--) {
        
            sum += ints[i] != 0 ? ints[i] * (i+1) : 0;
            
        }

        return sum;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值