题解 | #名字的漂亮度#

名字的漂亮度

http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

名字的漂亮度.其实就是 按字母出现的次数依次用 26 25 24等从大到小相加;
需要考虑有重复字母的情况,则重复最多的字母次数26 + 第2多25等从大到小
所以,定义一个数组,下标值用字母的ASCII码值表示, 默认值都是0, 出现了这个字母,那根据ASCII去放到对应的位置,此时值+1; 若出现重复的,值++;
最后对数组排序,从最高次数依次与26 25 等相乘再相加为最终值

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                int n = sc.nextInt();
                for(int i=0;i<n;i++){
                    String str = sc.next();
                    int[] s = new int[128];
                    for(int j=0;j<str.length();j++){
                        s[str.charAt(j)]++;//将所有字母的ascii码作为下标
                        //数组值存的是字母出现的次数
                    }
                    Arrays.sort(s);//升序排列
                    int mul=26,sum=0;
                    //只处理大于0的值
                    for(int j=s.length-1;j>0&&s[j]>0;j--){
                        sum+=s[j]*mul;
                        mul--;
                    }
                    System.out.println(sum);
                }
            }
        }
}
全部评论

相关推荐

10-07 20:48
门头沟学院 Java
不敢追175女神:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
鼗:四级有点难绷,感觉能拿国家励志奖学金,学习能力应该蛮强的,四级确实不重要,但是拿这个卡你可是很恶心啊
点赞 评论 收藏
分享
华为北京什么时候签约,哪位老哥来个准信
投递华为北京研究所等公司10个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务