Hello,大家好! 我是Cx_330
这几天更文速度有点慢,主要是在准备万字的JavaSE基础知识的
精心筹备,估计还需要几天的时间,到时候分享出来绝对够大家肝
一段时间了🤭😀:今天给大家带来一道简单的算法题
每天进步一点点,坚持到最后便成为了大佬!
题目描述
- 给定一个字符串,求出字符串中每个字符出现的次数,例:aabbc 并且以a(2)b(2)c(1)的形式打印出来
涵盖的知识点
- HashMap的创建以及常用的方法的使用
- 对HashMap中键和值的理解和灵活应用
- 通过键去找值遍历HashMap
- StringBuilder的创建以及常用方法的使用,以及和String字符串之间的转化
实现思路
- 本体核心的思路其实就是要理解HashMap中再添加对象的时候,若键的值相同,则上一个键的值将会被覆盖,值会被重新刷新。于是可以通过遍历字符串来往HashMap中添加每个字符,如果已存在,则先让值+1再存入,则否初始化值为1并存入;
源代码实现
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s=scanner.next();
HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
for (int i = 0; i <s.length() ; i++) {
Character ch=s.charAt(i);
Integer in=hm.get(ch);
if(in==null){
hm.put(ch,1);
}else {
in++;
hm.put(ch,in);
}
}
Set<Character> key=hm.keySet();
StringBuilder sb = new StringBuilder();
for(Character cha:key){
Integer in=hm.get(cha);
sb.append(cha).append("(").append(in).append(")");
}
String resule=sb.toString();
System.out.println(resule);
}
}
小结
以上就是本题的全部内容了。涵盖的知识点还是不少的,本质核心就是对键和值的理解和应用;
虽然题目不算难,但希望对小伙伴和们有所帮助吧!