• 名字的漂亮度


    题目描述

    给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
    每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
    给出多个名字,计算每个名字最大可能的“漂亮度”。

    输入描述:

    整数N,后续N个名字


    输出描述:

    每个名称可能的最大漂亮程度

    输入例子:
    2
    zhangsan
    lisi
    
    输出例子:
    192
    101

    思路:其实就是求每个字符串中字符出现的个数,然后根据个数多少进行排序,分别乘以26--;

     1 import java.util.ArrayList;
     2 import java.util.Collections;
     3 import java.util.Comparator;
     4 import java.util.HashMap;
     5 import java.util.Iterator;
     6 import java.util.List;
     7 import java.util.Map;
     8 import java.util.Set;
     9 import java.util.Map.Entry;
    10 import java.util.Scanner;
    11 
    12 public class Test1 {
    13 
    14     public static void main(String[] args) {
    15         Scanner sc = new Scanner(System.in);
    16         while (sc.hasNext()) {
    17             int n = Integer.valueOf(sc.nextLine());
    18             List<String> li = new ArrayList<String>();
    19             for (int i = 0; i < n; i++) {
    20                 String s = sc.nextLine();
    21                 String s1 = s.toUpperCase();
    22                 li.add(s1);
    23             }
    24 
    25             beauty(li);
    26         }
    27     }
    28 
    29     public static void beauty(List<String> li) {
    30         for (int i = 0; i < li.size(); i++) {
    31             countChar(li.get(i));
    32         }
    33 
    34     }
    35 
    36     public static void countChar(String s) {
    37         Map<Character, Integer> mp = new HashMap<Character, Integer>();
    38         int count = 0;
    39         for (int i = 0; i < s.length(); i++) {
    40             for (int j = 0; j < s.length(); j++) {
    41                 if (s.charAt(i) == s.charAt(j)) {
    42                     count++;
    43                 }
    44             }
    45             if (!mp.containsKey(s.charAt(i))) {
    46                 mp.put(s.charAt(i), count);
    47                 count = 0;
    48             } else {
    50                 count = 0;
    51             }
    52 
    53         }
    54 
    55         List<Map.Entry<Character, Integer>> li = new ArrayList<Map.Entry<Character, Integer>>();
    56         Set<Entry<Character, Integer>> se = mp.entrySet();
    57         Iterator<Entry<Character, Integer>> it = se.iterator();
    58         while (it.hasNext()) {// 把Map.Entry<String, Integer>类型元素存入list中,以便排序
    59             Entry<Character, Integer> en = it.next();
    60             li.add(en);
    61             // System.out.println(en);
    62         }
    63         Collections.sort(li, new Comparator<Entry<Character, Integer>>() {
    64 
    65             @Override
    66             public int compare(Entry<Character, Integer> o1,
    67                     Entry<Character, Integer> o2) {
    68                 // TODO Auto-generated method stub
    69                 return o1.getValue().compareTo(o2.getValue());
    70             }
    71         });
    72         // System.out.println(li);
    73         int sum = 0;
    74         int tem = 26;
    75         for (int i = li.size() - 1; i >= 0; i--) {
    76             sum += li.get(i).getValue() * (tem--);
    77         }
    78         System.out.println(sum);
    79     }
    80 
    81 }

  • 相关阅读:
    Encoding
    F Takio与Blue的人生赢家之战
    D FFF团的怒火
    C Golden gun的巧克力
    B 倒不了的塔
    A jubeat
    17230 计算轴承半径
    10686 DeathGod不知道的事情
    10688 XYM-AC之路
    10692 XYM-入门之道
  • 原文地址:https://www.cnblogs.com/crazybuddy/p/5398163.html
Copyright © 2020-2023  润新知