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 ...
随机推荐
- Maven项目聚合 jar包锁定 依赖传递 私服
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- BestCoder Round #86 1003
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5806 题意:有多少个区间里的第 k 大的数不小于 m 解法:尺取法,首先我们用dp[i]保存到i的位置有多 ...
- springBoot实现socketio
https://github.com/mrniko/netty-socketio-demo https://github.com/mrniko/netty-socketio
- Harry And Biological Teacher 分块 + 字符串hash
http://acm.hdu.edu.cn/showproblem.php?pid=5069 首先判断suffix和prefix最长多少可以直接暴力枚举长度然后 + hash可以立马判断是否相等,复杂 ...
- list map set常用方法之list
list 常用方法: 默认添加:list.add(e); 指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e); 获得集合内元素个数:list.size(); 返回是否删除 ...
- [PHP]使用日志进行调试
两种方法: 1.利用自定义函数: //写日志,打印字符串function writelog($str){ $open=fopen("log.txt","a+") ...
- win7,docker安装后,创建虚拟机分配不了ip错误 err: exit status 255
问题 win7装docker真麻烦,不如家里的win10爽.另外明明这是个很简单的操作,但是国内的解决方法有点落后,所以我写了个傻瓜式的. 有兴趣的可以直接看issue https://github. ...
- 使用Foxfly.Net读取STEP文件
Foxfly.Net是具备基本的几何建模和CAD文件读取功能.本文主要介绍读取STP/STEP文件的使用方法. 1.初始化 项目中引入FoxflyNet.dll程序集,在Program.cs中初始化建 ...
- Android图表库XCL-Charts
首先,这个是国人开发的,支持下必须顶!github项目地址:点击打开,由于项目的基本功能已经实现,所以项目作者也说以后基本不会在有更新了. 项目简介: Android图表库(XCL-Charts is ...
- servlet传值到servlet传值问题
今天在项目中遇到一个问题:中期项目自己做的新闻部分NewsPagerSortservlet传值时,正确答案如下 if(title!=""){ resp.sendRedirect(& ...