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

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


描述

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

参考引用

目录
相关文章
|
5月前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
72 0
|
25天前
|
Java
Java计算时间差
这段代码提供了两个方法来计算时间差。`timeDistance` 方法接收两个 `Date` 对象,计算并返回两者之间的天数、小时数和分钟数差异,格式为“X天Y小时Z分钟”。`hourDistance` 方法则接收两个时间字符串,解析后计算并返回两者之间相差的小时数(向上取整)。
31 4
|
12天前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
7862 67
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
5月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
134 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2天前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
30 14
|
2天前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
|
2月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
116 60
|
5月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
106 0
|
3月前
|
存储 Java
java中的常见运算符的计算方式
本文介绍了计算机中二进制数的原码、反码和补码的概念及其转换方式。原码是符号位加真值的绝对值;反码中正数不变,负数其余位取反;补码在反码基础上加1。文章还详细解释了Java中的常见运算符(如按位与、或、异或、移位等)如何基于二进制进行计算,并探讨了使用补码的原因,包括统一符号位处理和扩展表示范围。通过具体代码示例帮助理解这些概念。
java中的常见运算符的计算方式
|
3月前
|
存储 JavaScript Java
如何在Java中计算绝对值
绝对值表示一个数离0的距离,总是非负的。在Java中,可以通过`Math.abs()`函数或`if-else`条件语句来计算绝对值。使用`Math.abs()`可直接将负数转为正数,而`if-else`则根据条件判断是否取反。本文介绍了这两种方法的具体实现步骤和代码示例,并展示了如何通过用户输入获取数值并输出其绝对值。此外,还提供了完整的代码和编译执行的方法。
如何在Java中计算绝对值