华为OJ-名字的漂亮度
2016-04-07 15:35
190 查看
今天刷的华为OJ上的题目:
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。输入:
整数N,后续N个名字
N个字符串,每个表示一个名字
输出
每个名称可能的最大漂亮程度
样例输入2 zhangsan lisi
样例输出192 101
这道题目重点是对每个字符串进行处理,我采用了hashmap将字符串中的字符存储起来,然后对hashmap进行排序,这个排序方法借鉴了别人的一个比较巧妙的方法,利用了匿名类,接口,泛型等知识点,值得记录下来。
<pre name="code" class="java">import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scan= new Scanner(System.in); int amount=scan.nextInt(); String[] first=new String[amount]; int[] result=new int[amount]; for(int i=0;i<amount;i++){ first[i]=scan.next(); result[i]=getNum(first[i]); } for(int i=0;i<result.length;i++){ System.out.printf("%d ",result[i]);} } public static int getNum(String s){ int result=0; int num=26; char[] a=s.toCharArray(); int oldNum=0; HashMap<Character, Integer> map = new HashMap<Character, Integer>(); for (char c : a) { if (map.containsKey(c)) { oldNum=map.get(c); map.put(c, oldNum+1); }else { map.put(c, 1); } } List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>((Collection<? extends Entry<String, Integer>>) map.entrySet()); Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return (o2.getValue()).toString().compareTo(o1.getValue().toString()); } }); for(int i=0;i<infoIds.size();i++) { result=result+num*(infoIds.get(i).getValue()); num--; } return result; } }
相关文章推荐
- 6.9.1.2 qmgr_entry_done:清理活动数据
- displacement map置换贴图
- 使用Maven创建Web项目
- Qt基础: 信号和槽
- 存储过程自学
- logstash邮件报警功能实现
- magento 计划任务
- 面试题76:单链表的归并排序
- 菜鸟成长记-打开PDF文件,可以左右滑动
- HashMap内部实现及源码分析
- swift 之actionSheet 使用
- Nyoj 修路方案(次小生成树)
- javasScript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
- POJ 1015 Jury Compromise【DP】
- meaurespec的初步认识
- POJ 1015 Jury Compromise【DP】
- 利用请求头Referer防止盗链
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- JavaScript字符串转数字
- centos6.7 安装redis 3.0.7