【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

参考引用

目录
相关文章
|
2月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
48 1
|
5天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
26 5
|
15天前
|
Java 程序员
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
18 1
|
26天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
48 6
|
25天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
47 6
|
1月前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
1月前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
55 2
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
存储 算法 Java
Java 中常用的数据结构
【10月更文挑战第20天】这些数据结构在 Java 编程中都有着广泛的应用,掌握它们的特点和用法对于提高编程能力和解决实际问题非常重要。
31 6