名字的漂亮度

Posted Gump Yan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了名字的漂亮度相关的知识,希望对你有一定的参考价值。

题目如下: 
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。 
给出多个名字,计算每个名字最大可能的“漂亮度”。 
输入: 
整数N,后面N个名字,如 
2 zhangsan lisi 
输出: 
每个名字对应的最大漂亮程度 
如:192 101

分析:名字的漂亮度=26*字母个数最多的+25*字母个数其次的+24*字母个数再其次的(忽略大小写)+....+1*出现次数最小的。

要从以下几点入手:

1.统计字符的个数

2.升序排列或降序排列

3.计算漂亮度

知识点:

1.

import java.util.ArrayList;  
import java.util.Arrays;  
import java.util.Scanner;  
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;

public static class TestBeauty2{
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
		int N=cin.nextInt();/*找到刚开始输入的数字,就是表示有几个字母,即有几个字符串*/
		String[] names=new String[N];//构建字符串数组
		TestBeauty2 tb=new TestBeauty2();
		for(int i=0;i<N;i++){
			names[i]=cin.next();//取出键盘输入的字符串
				System.out.println(tb.beautyfulname(names[i]));
		}
		cin.close();
	}

	public int beautyfulname(String name){
		//统计字符个数
		char[] c=name.toCharArray();
		Map<Character,Integer> map=new HashMap<Character,Integer>();//要想使用Map接口,必须依靠子类实例化
		for(int i=0;i<c.length;i++){
			if(map.containsKey(c[i])){//判断集合中是否有键
				map.put(c[i],map.get(c[i])+1);//向集合中增加内容
			}else{
				map.put(c[i],1);//没有,就把值赋1
			}
		}

		//计算名字的漂亮度,先进行排序,再计算
		//排序
		List<Map.Entry<Character,Integer>> list=new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());
		Collections.sort(list,new Comparator<Map.Entry<Character,Integer>>(){
			public int compare(Map.Entry<Character,Integer> o1,Map.Entry<Character,Integer> o2){
				return o2.getvalue().compareTo(o1.getvalue());//按自然排序,降序
			}
		});

		//计算漂亮度=26*字母数最多的+25*次多的+...
		int result=0;
		for(int i=0;i<list.size();i++){
			result=result+list.get(i).getvalue()*(26-i);
		}
		return result;

	}
}

  

以上是关于名字的漂亮度的主要内容,如果未能解决你的问题,请参考以下文章

编程练习:名字的漂亮度

华为机试HJ45:名字的漂亮度

轻松保存重复多用的代码片段

Sublime Text3自定义代码片段

Alfred常见使用

小程序各种功能代码片段整理---持续更新