java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序
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()+" ");
}
} }
java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序的更多相关文章
- Java算法面试题(史上最强、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!
算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...
- java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。
package com.swift; import java.util.Scanner; public class Hanzi_jiequ { public static void main(Stri ...
- java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...
- java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...
- java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg
package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...
- java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
随机推荐
- ie 9 position:fixed 无效的两种情况
第一种情况: 运行发现在Google Chrome,FireFox都可以的,但是在IE9就不行了很是郁闷,因为IE6以上的版本都是支持fixed的属性的:上网上找了好久没找到,因为不知道关键字该怎么搜 ...
- 阿里云服务器 linux 怎么安装php(PHPSTUDY)开发环境
1.首先登录行云管家(https://yun.cloudbility.com/login.html) wget -c http://lamp.phpstudy.NET/phpstudy.bin //下 ...
- codeforces round 474 pathwalks
题目传送门http://codeforces.com/contest/960/problem/F 4月25号期中考,答应过年级组长要考年排前3的,所以25号以前我就不搞竞赛了,期中考要考好. 有很多大 ...
- LeetCode 179 Largest Number 把数组排成最大的数
Given a list of non negative integers, arrange them such that they form the largest number.For examp ...
- 自动生成actionbar 所需图片和style
http://jgilfelt.github.io/android-actionbarstylegenerator/
- 《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch
前言 前面 FLink 的文章中我们已经介绍了说 Flink 已经有很多自带的 Connector. 1.<从0到1学习Flink>-- Data Source 介绍 2.<从0到1 ...
- matlab 打不开excel文件
方法论 excel的后缀为.xls, matlab是无法识别的, 需要将其另存为.xlsx文件格式 打开excel, 点击save as, 选中保存的文件格式是.xlsx即可
- 邓俊辉数据结构学习-8-2-B树
B树 概述 动机: B树实现高速I/O 640K如何"满足"任何实际需求了-- 源自比尔·盖茨的一个笑话 前提知识 高速缓存 为什么高速缓存有效? 不同容量的存储器,访问速度差异悬 ...
- 动态页面技术----EL技术、JSTL技术,javaEE的开发模式
1 EL技术 1.1 EL 表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写, EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码. ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:8.自定义传输协议
欢迎阅读我的开源项目<迷你微信>服务器)与<迷你微信>客户端 前言 在上一篇中,我们讲到了<迷你微信>服务器)的主体架构,还讲到了如何在现有功能上进行拓展,但是拓展 ...