给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个字符串,计算每个字符串最大可能的“漂亮度”。
本题含有多组数据。
数据范围:输入的名字长度满足
给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
第一行一个整数N,接下来N行每行一个字符串
每个字符串可能的最大漂亮程度
2 zhangsan lisi
192 101
对于样例lisi,让i的漂亮度为26,l的漂亮度为25,s的漂亮度为24,lisi的漂亮度为25+26+24+26=101.
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case int num = Integer.valueOf(in.nextLine()); for(int i= 0;i< num;i++){ String s = in.nextLine(); Map<Character,Integer> map = new HashMap<>(); for(int j = 0;j< s.length();j++){ char c = s.charAt(j); map.put(c,map.getOrDefault(c,0)+1); } List<Integer> sortList = new ArrayList(); for(Map.Entry<Character,Integer> entrySet: map.entrySet()){ sortList.add(entrySet.getValue()); } //降序排序 Collections.sort(sortList,Collections.reverseOrder()); int count = 26; int res = 0; for(Integer sort : sortList){ res += sort*count; count--; } System.out.println(res); } } } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); in.nextLine(); while (n-- > 0) { char [] chars = in.nextLine().toCharArray(); int [] a = new int[26]; for (int i = 0; i < chars.length; i++) { a[chars[i] - 'a']++; } Arrays.sort(a); int sum = 0; for (int i = 0; i < a.length; i++) { sum += a[i] * (i + 1); } System.out.println(sum); } } }
import java.util.Scanner; import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { int n = in.nextInt(); in.nextLine(); for (int i = 0; i < n; i++) { String str = in.nextLine(); Map<Character, Integer> map = new HashMap<>(); for (char c : str.toCharArray()) { map.put(c, map.getOrDefault(c, 0)+1); } Collection<Integer> c = map.values(); Object[] arr = c.toArray(); Arrays.sort(arr, Collections.reverseOrder()); int val = 0; int init = 26; for (Object o : arr) { val += (int)o * init; init--; } System.out.println(val); } } } }
import java.util.Scanner; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); // 输入的字符串个数 int n = Integer.parseInt(line); ArrayList<String> list = new ArrayList<>(); // 存储输入的字符串 for (int i = 0; i < n; i++) { list.add(br.readLine()); } for (int i = 0; i < list.size(); i++) { // 计算每个字符串中每个字符出现的次数 HashMap<Character, Integer> map = new HashMap<>(); String s = list.get(i); for (int j = 0; j < s.length(); j++) { char c = s.charAt(j); map.put(c, map.getOrDefault(c, 0) + 1); } // 排序 Collection<Integer> values = map.values(); ArrayList<Integer> list1 = new ArrayList<>(values); // 字符出现次数排序,降序排列 Collections.sort(list1, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }); // 计算漂亮分 int sum = 0; int score = 26; for (int j = 0; j < list1.size(); j++) { sum += score * list1.get(j); score--; } System.out.println(sum); } } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { //思路;用HashMap保存每个字母出现的次数,然后对其根据次数从大到小进行漂亮度从大到小进行累计 //最后将每行字符串的真正情况保存到result Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n=Integer.valueOf(in.nextLine()); ArrayList<String> list=new ArrayList<>(); for(int i=0;i<n;i++){ list.add(in.nextLine()); } //保存计算结果 ArrayList<Integer> result=new ArrayList<>(); for(int i=0;i<list.size();i++){ //保存出现的次数 HashMap<Character,Integer> map=new HashMap<>(); //遍历添加当前行字符串的字符出现次数添加到map for(int j=0;j<list.get(i).length();j++){ Character c=list.get(i).charAt(j); if(map.get(c)==null||map.get(c)==0){ map.put(c,1); }else{ map.put(c,map.get(c)+1); } } //获取漂亮度 result.add(getResult(map)); } for(int i=0;i<result.size();i++){ System.out.println(result.get(i)); } } public static int getResult(HashMap<Character,Integer> map){ //将每个字符出现次数保存到list,进行排序,然后根据次数对漂亮都进行计算 ArrayList<Integer> list=new ArrayList<>(); for(Character c:map.keySet()){ int sum=map.get(c); list.add(sum); } //排序:顺序 Collections.sort(list); int sum=0; int index=list.size()-1; //计算漂亮都 for(int i=26;i>26-list.size();i--){ sum+=i*list.get(index); index--; } return sum; } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNext 的区别 while (in.hasNext()) { // 注意 while 处理多个 case int total = in.nextInt(); for (int i = 0; i < total; i++) { String s = in.next(); // 全部转换成小写 s = s.toLowerCase(); // 定义一个字母数组, int[] letters = new int[26]; char[] arr = s.toCharArray(); for (int k = 0; k < arr.length; k++) { letters[arr[k] - 'a'] += 1; } Arrays.sort(letters); int res = 0; int curScore = 26; for (int k = 25; k >= 0; k--) { if (letters[k] != 0) { res += letters[k] * curScore; curScore--; } } System.out.println(res); } } } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int num = Integer.parseInt(in.nextLine()); for (int i = 0; i < num; i++) { String str = in.nextLine(); int[] a = new int[26]; int j = 0; while (!"".equals(str)) { String temp = str.replace(String.valueOf(str.charAt(0)), ""); a[j] = str.length() - temp.length(); str = temp; j++; } Arrays.sort(a); int beautiful = 0; for (int k = a.length - 1; k >= 0; k--) { beautiful += a[k] * (k + 1); } System.out.println(beautiful); } } }
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 单词个数 int count = in.nextInt(); for (int i = 0; i < count; i++) { countBeautiful(in.next()); } } private static void countBeautiful(String inputStr) { // 统计字符串个数 List<Integer> countList = new ArrayList<>(); char[] chars = inputStr.toCharArray(); int startLen = inputStr.length(); Map<Character, Boolean> map = new HashMap<Character, Boolean>(); for (char c : chars) { int replaceLen = inputStr.replace(String.valueOf(c), "").length(); int countLen = startLen - replaceLen; if (countLen != 0 && !map.containsKey(c)) { // 为了防止单个字母重复统计 map.put(c, true); countList.add(countLen); } } // 降序排列 Collections.sort(countList, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); int beautiful = 0; for (int i = 0; i < countList.size(); i++) { // 最多的个数字符串漂亮度为26,其他依次递减 beautiful += (26 - i) * countList.get(i); } System.out.println(beautiful); } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int a = in.nextInt(); for (int i = 0; i < a; i++) { List<Character> chars = new LinkedList<>(); List<Integer> ints = new LinkedList<>(); String b = in.next(); b = b.toLowerCase(); for (int j = 0; j < b.length(); j++) { if (chars.contains(b.charAt(j))) { int index = chars.indexOf(b.charAt(j)); int c = ints.get(index); c++; ints.set(index, c); continue; } chars.add(b.charAt(j)); ints.add(1); } Collections.sort(ints); int d = 26; int total = 0; for (int z = ints.size() - 1; z >= 0; z--) { total += (ints.get(z) * (d--)); } System.out.println(total); } } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); String[] strS = new String[num]; for (int i = 0; i < num; i++) { strS[i] = br.readLine(); } for (String str : strS) { int num2 = beautiful(str); System.out.println(num2); } } public static int beautiful(String str){ int len = str.length(); HashMap<Character, Integer> hashMap = new HashMap<>(); for(int i = 0; i < len; i++){ char temp = str.charAt(i); if(hashMap.containsKey(temp)){ hashMap.put(temp, hashMap.get(temp) + 1); }else{ hashMap.put(temp, 1); } } ArrayList<Integer> list = new ArrayList<>(); for(Character ch : hashMap.keySet()){ list.add(hashMap.get(ch)); } list.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); int sum = 0; int[] weight = {26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; for (int i = 0; i < list.size(); i++) { sum += list.get(i) * weight[i]; } return sum; } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Arrays; import java.util.*; public class Main{ public static void main(String[] args) throws IOException{ Scanner scan = new Scanner(System.in); int k = scan.nextInt(); for(int i = 0;i < k;i++) { String str = scan.next(); List<Integer> list = new ArrayList<>(); Map<Character,Integer> map = new LinkedHashMap<>(); for(int j = 0;j < str.length();j++) { if(map.get(str.charAt(j)) != null) { map.put(str.charAt(j),map.get(str.charAt(j))+1); } else { map.put(str.charAt(j),1); } } for (Map.Entry<Character,Integer> entry: map.entrySet()) { list.add(entry.getValue()); } Collections.sort(list); Collections.reverse(list); int result = 0; int p = 26; for(Integer vaule : list ) { result += vaule * p; p--; } System.out.println(result); } } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Arrays; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String str; for (int i = 0; i < n; ++i){ str = br.readLine(); char[] arr = str.toLowerCase().toCharArray(); int beautiful = 0; int[] arrScore = new int[26]; for (int j = 0; j < arr.length; ++j){ int index = arr[j] - 'a'; arrScore[index] ++; } Arrays.sort(arrScore); for (int j = 26; j >= 1; j--){ beautiful += arrScore[j - 1] * j; } System.out.println(beautiful); } } }
import java.util.*; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = Integer.valueOf(in.nextLine()); List<Integer> list = new ArrayList(n); for(int i=0;i<n;i++){ list.add(calc(in.nextLine())); } for(Integer sum : list){ System.out.println(sum); } } public static int calc(String s){ if(s.length() == 0){ return 0; } //去重后一共有多少个字符 Set<Character> set = new HashSet(); for(int i=0;i<s.length();i++){ set.add(s.charAt(i)); } //计算每个字符出现的次数 Map<Character, Integer> map = new HashMap<Character, Integer>(); Iterator<Character> iterator = set.iterator(); while (iterator.hasNext()) { Character c = iterator.next(); String s1 = s.replaceAll(String.valueOf(c), ""); int count = s.length()- s1.length(); map.put(c, count); } //排序 List<Integer> values = new ArrayList<Integer>(map.values()); values.sort(new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o2-o1; } }); int i = 26; int sum = 0; for (Integer count : values) { sum += i*count; i--; } return sum; } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String[] s = new String[n]; for(int i=0;i<n;i++){ s[i] = sc.next(); } int[] res = new int[n]; for(int i=0;i<n;i++){ String ss = s[i]; int[] arr = new int[26]; for(char ch : ss.toCharArray()){ arr[ch-'a']++; } Arrays.sort(arr); int sum = 0; for(int k=26;k>=1;k--){ sum += k*(arr[k-1]); } res[i] = sum; } for(int i=0;i<n;i++){ System.out.println(res[i]); } } }
import java.util.*; public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ int n = scanner.nextInt(); String[] arr = new String[n]; for (int i = 0; i < n; i++){ arr[i] = scanner.next(); } int[] res = new int[n]; for (int i = 0; i < n; i++){ Map<Character, Integer> map = new HashMap<>(); for (int j = 0; j < arr[i].length(); j++){ if (map.containsKey(arr[i].charAt(j))){ int count = map.get(arr[i].charAt(j)); count++; map.put(arr[i].charAt(j), count); }else { map.put(arr[i].charAt(j), 1); } } List<Integer> list = new ArrayList<>(); for (char ch:map.keySet()) { list.add(map.get(ch)); } Collections.sort(list); Collections.reverse(list); int number = 26; for (int j = 0; j < list.size(); j++) { res[i] += list.get(j)*number; number--; } } for (int i = 0; i < res.length; i++) { System.out.println(res[i]); } } } }
import java.util.Scanner; import java.util.Map; import java.util.LinkedHashMap; import java.util.List; import java.util.LinkedList; import java.util.Collections; public class Main{ public static void main(String[]args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int num=scan.nextInt(); String []array= new String[num]; for(int i=0;i<num;i++){ array[i]=scan.next(); System.out.println(getPrety(array[i])); } } scan.close(); } public static int getPrety(String string){ int[]prety =new int[26]; for(int i=0;i<26;i++){ prety[i]=26-i; } Map<Character,Integer>map=new LinkedHashMap<Character,Integer>(); for(int i=0;i<string.length();i++){ char ch = string.charAt(i); if(map.containsKey(ch)){ map.put(ch,map.get(ch)+1); }else{ map.put(ch,1); } } List<Integer>list= new LinkedList<Integer>(map.values()); Collections.sort(list); Collections.reverse(list); int sum =0; for(int i=0;i<list.size();i++){ sum+=list.get(i)*prety[i]; } return sum; } }