首页 > 编程语言 >【Java 数据结构及算法实战】系列 016:HJ2 计算某字符出现次数

【Java 数据结构及算法实战】系列 016:HJ2 计算某字符出现次数

时间:2023-02-06 13:01:31浏览次数:64  
标签:字符 Java 哈希 HJ2 个数 输出 016 字符串 输入


描述

写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写,字符串长度小于500。

输入描述:

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。

输出描述:

输出输入字符串中含有该字符的个数。

解法

该题型主要是考察字符串、哈希的操作。解法步骤如下

  • 输入一行,代表要计算的字符串,非空,长度小于500。
  • 输入的字符串转为小写
  • 构造一个哈希结构,key为字符,值为该字符的个数
  • 对输入字符串进行遍历,将每遍历一个字符,就将该字符记录到哈希中
  • 再输入一行,代表要统计的字符。
  • 输入的字符转为小写。
  • 从哈希结构取出指定字符的值
  • 输出一个整数,表示输入字符串中含有该字符的个数。


/*
* Copyright (c) waylau.com, 2022. All rights reserved.
*/

package com.waylau.nowcoder.exam.oj.huawei;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
* HJ2 计算某字符出现次数. 描述:写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,
* 然后输出输入字符串中该字符的出现次数。(不区分大小写字母) 数据范围: 1≤n≤1000
* 输入描述:第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。 输出描述:输出输入字符串中含有该字符的个数。(不区分大小写字母)
*
* @author <a href="https://waylau.com">Way Lau</a>
* @since 2022-08-05
*/

public class HJ2CountsTheNumberOfCharacters {

public static void main(String[] args) {
// 输入一行,代表要计算的字符串,非空,长度小于5000。
Scanner sc = new Scanner(System.in);

// 全部转为小写
String in = sc.nextLine().toLowerCase();

// 构造一个哈希结构,key为字符,值为该字符的个数
Map<Character, Integer> map = new HashMap<>();

// 对输入字符串进行遍历,将每遍历一个字符,就将该字符记录到哈希中
for (int i = 0; i < in.length(); i++) {
char c = in.charAt(i);
// 之前就记过,就累加个数;否则就记1
Integer count = map.get(c);

if (count != null) {
count++;
} else {
count = 1;
}

map.put(c, count);
}

// 再输入一行,代表要统计的字符。
// 从哈希结构取出指定字符的值
char charIn = sc.nextLine().toLowerCase().charAt(0);

// 输出一个整数,表示输入字符串中含有该字符的个数。
System.out.println(map.get(charIn) == null ? 0
: map.get(charIn));

// 关闭资源
sc.close();
}
}


运行应用输出如下:

hello world

o

2

参考引用


标签:字符,Java,哈希,HJ2,个数,输出,016,字符串,输入
From: https://blog.51cto.com/u_9427273/6038916

相关文章

  • 【Java数据结构及算法实战】系列007:Java队列01——Queue概述
    队列与栈类似,也是一种运算受限的线性表。队列则被限定在表尾进行插入、在表头进行删除,这种数据结构,实现了FIFO(FirstInFirstOut,先进先出)或者是LILO(LastInLastOut,后进后......
  • java注解与反射详解
    一、注解篇1.1、注解的基本概念注解:一种代码级别的说明,它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次;它可以声明在包、类、字段、方法、局部变量......
  • javascript提交示例
    <td>@Html.ActionLink("编辑","Edit",new{id=1})<text>|</text>@Html.ActionLink("删除","Delete",new{id=2})<text>|</text><ahref="javascrip......
  • java中的繁体字/简体字转换
    一、引入pom文件<!--https://mvnrepository.com/artifact/com.spreada/ZHConverter--><dependency><groupId>com.spreada</groupId><artifactId>ZHConverte......
  • Java设计原则
    在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。......
  • 7.6提供相同运行环境的Java虚拟机
    除虚拟机的方法之外,还有一种方法能够提供不依赖于特定硬件及操作系统的程序运行环境,那就是Java。大家说的Java,有两个层面的意思。一个是作为编程语言的Java,另一个是作为程......
  • 使用Openfeign,出现: java.lang.NoClassDefFoundError: org/apache/http/ssl/SSLContext
    之前是好的,后来项目启动,莫名其妙出现这个问题。猜测肯定是包的版本问题。 升级了cloudalibaba和boot-dependencies,发现还是没用。后面查找文章,说是这个版本低了。......
  • JavaScript中和动画相关的几个事件
    JavaScript中有以下几种与动画相关的事件:requestAnimationFrame这个事件可以在浏览器重绘之前触发,通常用于制作高性能动画。下面是一个使用requestAnimationFrame来制作简......
  • 7.6提供相同运行环境的Java虚拟机
    除虚拟机的方法之外,还有一种方法能够提供不依赖于特定硬件及操作系统的程序运行环境,那就是Java。大家说的Java,有两个层面的意思。一个是作为编程语言的Java,另一个是作为程......
  • JavaScript 数组常用方法大全
    前言大家好,我是CoderBin,本次总结了JavaScript中关于数组的一些常用操作,想学习其他方法或者深入学习这些方法的可点击前往MDN-Array。希望对大家有所帮助,谢谢!如果文中有不......