出现次数多的给依次给最大的权值即最大值

名字的漂亮度

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

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextInt()) {
        int count = scanner.nextInt();
        List<String> allNames = new ArrayList<>();
        while (count-- > 0) {
            allNames.add(scanner.next());
        }
        for (String name : allNames) {
            System.out.println(getNameValue(name));
        }
    }
}

private static int getNameValue(String name) {
    Map<String, List<String>> results = Arrays.stream(name.split("")).collect(Collectors.groupingBy(String::new));
    List<Integer> counts = new ArrayList<>();
    for (Map.Entry<String, List<String>>  item : results.entrySet()) {
        counts.add(item.getValue().size());
    } //统计每个字母出现的次数
    final List<Integer> finalCounts = counts.stream().sorted(Comparator.comparing(Integer::intValue).reversed()).collect(Collectors.toList()); //根据出现的次数倒序排序
    return IntStream.range(0, counts.size()).mapToObj(index -> (26 - index) * finalCounts.get(index)).reduce((a, b) -> a + b).get(); //计算权值
}

}

全部评论

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务