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 ...
随机推荐
- ldap第二天-yum安装LDAP + phpLDAPadmin
1.安装LDAP服务器和客户端,migrationtools工具包 yum install -y openldap-servers openldap-clients migrationtools 2. ...
- Java基础笔记(七)—— 成员变量、静态变量、局部变量
public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(Str ...
- 设计模式——抽象工厂(Abstract Factory)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. ——DP UML类图 模式说明 抽象工厂与工厂方法在定义上最明显的区别是“创建一系列相关或相互依赖对象的接口”,由此可以看出抽象工 ...
- Microsoft JDBC Driver 使用 getParameterMetaData 会报错?
不知道为何使用 Microsoft JDBC Driver for SQL Server 驱动时,sql语句不带参数没有问题,但是如果带参数且使用 getParameterMetaData 就会提示某 ...
- FZU Problem 2244 Daxia want to buy house
模拟题,注意: 1.那两个贷款都是向银行贷的,就是两个贷款的总额不能超过70%,就算公积金贷款能贷也不行,我开始的时候以为公积金贷款是向公司借的,,欺负我这些小白嘛.... 2.最坑的地方 *0.7是 ...
- C#对象和集合初始值设定项
对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属性分配值,而无需调用后跟赋值语句行的构造函数. 利用对象初始值设定项语法,你可为构造函数指定参数或忽略参数(以及括号 ...
- 30分钟学会React Hook, Memo, Lazy
我们来学习React 16.8里的新特性. 1. 自行配置好React的环境,推荐你使用Create React APP, 你也可以下载本文档Zip解压到本地直接运行. https://github. ...
- 16.Ubuntu LTS 16.04安装搜狗输入法全过程记录(纯新手)
这是我第四次打算转到Ubuntu上了,应该不会像以前那样装个系统就拜拜了.打算先把C和Vim重新学起来,数据结构那本书看完写完,第二步是学python和算法导论,暂定如此. 昨天晚上系统装完以后想着要 ...
- 在Ubuntu中安装MySQL
在Ubuntu中安装MySQL Ubuntu实用工具系列文章,将介绍基于Linux ubuntu的各种工具软件的配置和使用.有些工具大家早已耳熟能详,有些工具经常用到但确依然陌生.我将记录我在使用操作 ...
- 从零开始的全栈工程师——js篇2.14(表单与计时器)
一.表单 Form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表单的事件 oncha ...