java算法面试题:有一个字符串,其中包含中文字…
2018-06-18 03:42:27来源:未知 阅读 ()
package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 */ String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde"; char[] arr=str.toCharArray(); Map<Character,Integer> map=new HashMap<Character,Integer>(); int num=0; for(char c:arr) { map.put(c, num); } for(Entry<Character,Integer> entry:map.entrySet()) { System.out.println(entry.getKey().toString()+entry.getValue()); } for(char c:arr) { if(map.containsKey(c)) { num=map.get(c); num++; map.remove(c); map.put(c, num); } } for(Entry<Character,Integer> entry:map.entrySet()) { System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" "); } } }
按键值的降序排序
package com.swift; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数,按值的降序排序,如果值相同则按键值的字母顺序 */ String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde"; char[] arr=str.toCharArray(); Map<Character,Integer> map=new TreeMap<Character,Integer>(new Comparator<Character>() {//这里只能按键值排序 @Override public int compare(Character o1, Character o2) { return o2-o1;//降序 } }); int num=0; for(char c:arr) { map.put(c, num); } for(Entry<Character,Integer> entry:map.entrySet()) { System.out.println(entry.getKey().toString()+entry.getValue()); } for(char c:arr) { if(map.containsKey(c)) { num=map.get(c); num++; map.remove(c); map.put(c, num); } } for(Entry<Character,Integer> entry:map.entrySet()) { System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" "); } } }
按值的降序排序,如果值相同则按键值的字母顺序
要注意这个问题:
不能把map.entrySet()直接强转成List<Entry<Character,Integer>>
需要用new ArrayList()的构造,即放在参数中
package com.swift; 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.Map.Entry; import java.util.TreeMap; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数,按值的降序排序,如果值相同则按键值的字母顺序 */ String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde"; char[] arr=str.toCharArray(); Map<Character,Integer> map=new TreeMap<Character,Integer>(); int num=0; for(char c:arr) { map.put(c, num); } for(char c:arr) { if(map.containsKey(c)) { num=map.get(c); num++; map.remove(c); map.put(c, num); } } for(Entry<Character,Integer> entry:map.entrySet()) { System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" "); } List<Entry<Character,Integer>> list=new ArrayList<Entry<Character, Integer>>(map.entrySet()); Collections.sort(list, new Comparator<Entry<Character,Integer>>(){ @Override public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) { int num=o2.getValue()-o1.getValue(); return num==0?o1.getKey()-o2.getKey():num; } }); System.out.println(); for(Entry<Character,Integer> entry:list) { System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" "); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Kafka集群环境搭建
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash