键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出

2023-10-28

键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出。

/*
 * 需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数,要求结果输出格式是:
 * a(5)b(4)c(3)d(2)e(1)

 *
 * 分析:
 *         A:定义一个字符串
 *         B:定义一个TreeMap集合
 *             键:Character
 *             值:Integer
 *         C:把字符串转换为字符数组
 *         D:遍历字符数组,得到每一个字符
 *         E:拿刚才得到的字符作为键去集合中找,看返回值:
 *             是null:说明该键不存在,就把该字符作为键,1作为值存储
 *             不是null:说明该键存在,就把值加1,然后重新存储该键和值
 *         F:定义字符串缓冲区变量
 *         G:遍历集合,得到键和值,按照要求拼接处理
 *         H:把字符串缓冲区转换为字符串输出
 */


/*
 * 需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数,要求结果输出格式是:
 * a(5)b(4)c(3)d(2)e(1)
 * 
 * 分析:
 * 		A:定义一个字符串
 * 		B:定义一个TreeMap集合
 * 			键:Character
 * 			值:Integer
 * 		C:把字符串转换为字符数组
 * 		D:遍历字符数组,得到每一个字符
 * 		E:拿刚才得到的字符作为键去集合中找,看返回值:
 * 			是null:说明该键不存在,就把该字符作为键,1作为值存储
 * 			不是null:说明该键存在,就把值加1,然后重新存储该键和值
 * 		F:定义字符串缓冲区变量
 * 		G:遍历集合,得到键和值,按照要求拼接处理
 * 		H:把字符串缓冲区转换为字符串输出 
 */

package cn.itcast_02;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo {
	public static void main(String[] args) {
		// 定义一个字符串:键盘录入方式
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String line = sc.nextLine();

		// 定义一个TreeMap集合
		TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

		// 把字符串转换为字符数组
		char[] chs = line.toCharArray();

		// 遍历字符数组,得到每一个字符
		for (char ch : chs) {
			// 拿刚才得到的字符作为键去集合中找,看返回值
			Integer i = tm.get(ch);

			// 是null:说明该键不存在,就把该字符作为键,1作为值存储
			if (i == null) {
				tm.put(ch, 1);
			} else {
				// 不是null:说明该键存在,就把值加1,然后重新存储该键和值
				++i;
				tm.put(ch, i);
			}
		}

		// 定义字符串缓冲区变量
		StringBuilder sb = new StringBuilder();

		// 遍历集合,得到键和值,按照要求拼接处理
		Set<Character> set = tm.keySet();
		for (Character key : set) {
			Integer value = tm.get(key);
			sb.append(key).append("(").append(value).append(")");
		}

		// 把字符串缓冲区转换为字符串输出
		String resulut = sb.toString();
		System.out.println("resulut:" + resulut);
	}
}



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出 的相关文章

  • 是否可以创建一个具有 ArrayList 属性且复杂度为 log(n) 的 Map?

    我正在尝试构建一个通用数据结构 它需要保存键和值 同时跟踪索引 其中键和值被放入其中 就像 arraylist 那样 复杂度为 O log n 或更少 我尝试解决这个问题 并创建了各种具有整数索引和值的 TreeMap 反之亦然 键也相同
  • .NET 的 StringBuilder 是线程安全的吗

    MSDN 文档的常规 线程安全 部分StringBuilder指出 不保证任何实例成员都是线程安全的 但这个语句感觉就像是为框架中的几乎每个类复制并粘贴了 http msdn microsoft com en us library syst
  • 使用原始 128 ASCII 表使用仿射密码加密/解密字符串

    所以我尝试使用仿射密码来加密消息 我想使用全部 128 个 ASCII 字符来完成此操作 当涉及特定字母 Q R S T 和 U 时 我收到错误 它们没有正确转换回来并显示错误的解密 有什么想法吗 加密消息 RUX adgjmpsvy 解密
  • TreeMap 中的键返回 null

    所以我有一个非常奇怪的错误 当我最初使用 keySet 迭代大型 TreeMap 的前 10 个键时 我偶然发现了它 其中一个键返回 null 据我的理解 这应该是不可能的 所以我写了下面的测试代码 int i 0 for Map Entr
  • 如何在Android中每2个字符后连接特殊符号作为冒号

    我想连接或附加特殊字符作为冒号 String 中每 2 个字符之后 例如 原始字符串如下 String abc AABBCCDDEEFF 连接或附加冒号后如下 String abc AA BB CC DD EE FF 所以我的问题是我们如何
  • .net 如何将字符串生成器与字符串进行比较

    在 vb net 或 C 中 我无法弄清楚如何将字符串生成器与字符串进行比较 我已经搜索了很多 但找不到答案 我必须编写自己的例程 难道就没有更好的办法吗 这不起作用 Dim s As String abc Dim sb As New St
  • Android StringBuilder 与字符串连接

    我正在阅读此文档页面 http developer android com reference android util Log html http developer android com reference android util
  • 如何获取matplotlib树图中形状的坐标?

    我有工作树形图 我需要获取此树形图每个形状的坐标 例如之后将它们放入 GeoJSON 中 有没有任何函数可以帮助我解决这个问题 或者我将从这个树状图的 svg 版本中获取所有坐标 With ax squarify plot ax patch
  • Highcharts - 在多个级别和多个布局树形图中隐藏子标签

    在高图表上 我有一个treemap with 2 levels 每个都有一个不同的布局算法 现在我想把我们能看到的限制到目前的水平 这意味着在第 1 级 我不想看到2级的标签 仅在向下钻取时才会出现 并且级别 1 的标签将消失 我知道这很容
  • String 或 StringBuilder 返回值?

    如果我在方法中使用 StringBuilder 对象构建字符串 那么以下操作是否有意义 返回StringBuilder对象 并让调用代码调用ToString return sb 或者通过自己调用 ToString 返回字符串 return
  • TreeMap<> 操作的时间复杂度:get() 和 subMap()

    基于这篇文章 TreeMap 操作的时间复杂度 subMap headMap tailMap https stackoverflow com questions 14290751 time complexity of treemap ope
  • StringBuilder.ToString() 的复杂性是多少

    在 C 中 复杂度是多少StringBuilder ToString 是 O 1 O N 还是其他 不同框架版本有所不同 在旧版本中StringBuilder工作于string直接 所以没有额外费用 ToString 它只是直接向您提供数据
  • TreeMap中出现这个空指针异常是由于并发访问造成的吗?

    我知道TreeMap https docs oracle com javase 7 docs api java util TreeMap html不是线程安全的 我正在尝试将 TreeMap 与并发跳表映射 https docs oracl
  • TreeMap 是如何排序的

    如何TreeMap种类 举例来说 您有以下地图 TreeMap
  • StringBuilder append() 和 null 值

    我有一个清单Strings 我想将它们与中间的空格连接起来 所以我正在使用StringBuilder 现在如果有任何一个Strings are null 它们被存储在StringBuilder字面意思是 空 下面用一个小程序来说明这个问题
  • 使用 + 符号连接字符串

    今天我在读书Antonio 关于 toString 性能的博客 https antoniogoncalves org 2015 06 30 who cares about tostring performance 还有一段话 昨天曾经被认为
  • 我们如何使用 StringBuilder 在字符串前面添加字符串?

    我知道我们可以使用附加字符串StringBuilder 有没有一种方法可以使用前置字符串 即在字符串前面添加字符串 StringBuilder这样我们就可以保持性能优势StringBuilder offers 使用位置参数设置为 0 的 i
  • 将字符串中的第一个字母大写[重复]

    这个问题在这里已经有答案了 我在将字符串中的第一个字母转换为大写字母时遇到问题 rackingSystem toLowerCase has capitals in every word so first convert all to low
  • 如何将此数据编码为 JSON 中的父/子结构

    我正在使用 d3 js 将动物 有机体 家族 一次最多 4000 个 可视化为树形图 尽管数据源也可以是目录列表或命名空间对象列表 我的数据如下 json organisms name Hemiptera Miridae Kanakamir
  • 使 TreeMap 比较器容忍 null

    这个定制的 Valuecomarator 按其值对 TreeMap 进行排序 但在搜索 TreeMap 是否具有某个键时 它不能容忍 nullpointException 如何修改比较器来处理零点 import java io IOExce

随机推荐

  • Kubernetes系列之kubeadm部署多节点master集群

    版本信息 linux Centos7 kubernetes v1 14 5 docker v18 06 1 ce 节点信息 VIP 47 110 19 11 阿里云负载均衡 安装前准备 开始部署前确保所有节点网络正常 能访问公网 主要操作都
  • Qt Qt5NetWork.lib Qthttp的get、post请求都无法响应解决方法(丧心病狂)

    qt项目中 get post请求都无法响应 抓包发现也并没有发出请求 程序也编写通过 什么原因就是找不到 最终发现 在新建Qt Gui application的时候 如果后续要做post和get请求 一定要选上NetWork NetWork
  • unity学习日记:如何在手机上实现第三人称视角

    在手机上实现第三人称视角与在电脑上并无太大区别 只不过需要检测屏幕触碰以及滑动等问题 大体思路就是 在每一帧的开头 将Camera放到target的位置上等待进行旋转 获取到每一帧手指滑动的位移值 再按照位移值进行相应的旋转 最后Camer
  • 实机安装kalilinux和windows双系统(有图详细介绍)

    我选择的u盘制作工具是universal USB install 选择最上边第一步系统 选择kalilinux 选择你的镜像位置 然后第三步选择你要用的u盘 然后按create 然后选是等待解压完成 然后进入你电脑管理分出来磁盘空间30g以
  • win10中 微软 输入法 简体字 与 繁体字 设定 切换

    前言 不知道按了什么快捷键 输入的文字都变成了繁体字效果 快捷键 ctrl shift f 设定方法如下 一步一步设定 2 3 4 5 6 7 8 9 10
  • Python——pymysql + DBUtils实现数据库连接池及数据批量读写

    文章目录 1 安装pymysql DBUtils 2 创建数据库连接池 3 读MySQL 1 只读一行 2 批量读取 4 写入MySQL 1 安装pymysql DBUtils pip3 install i https pypi tuna
  • Unity2019+ 版本JDK配置常见问题

    在之前那篇Vuforia的配置中 安卓环境的配置是没问题的 而有人反馈说JDK配置有问题 后面我挨个排查了问题 结合网上已有的问题 整理出这篇分享给大家 1 明明安装了对应Unity版本模块包却依然提示找不到OpenJDK 如图1 2 图1
  • Java:正则表达式工具的使用

    概述 在java中 提供了一些跟正则表达式有关的工具类 例如String Pattern Matcher PatternSyntaxException等等 可以进行丰富的与正则表达式有关的操作 本文便依据功能分类来对这些功能的使用进行详细讲
  • 网站延迟加载图像有哪些方法?

    加载图像时 网站可能遇到延迟的问题 以下是一些可以减少图像加载延迟的方法 1 图像优化 优化图像大小和格式是减少加载延迟的关键 可以使用图像编辑工具来压缩图像 减小文件大小 同时保持可接受的质量 另外 使用适当的图像格式 如JPEG PNG
  • Linux API函数大全

    获取当前执行路径 getcwd 1 API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资
  • “930大促”日活增速超40% ,哈啰如何用预案高效应急?

    一分钟精华速览 应急预案 是指在系统出现故障时 为了保障核心业务能够持续可用 而提前准备的指导手册 这个手册可以用来告诉我们 在遇到什么样的问题后 做什么样的操作能最大化地降低对业务的影响 将被动响应变为主动防御 哈啰结合 930大促 活动
  • matlab练习程序(二值图像连通区域标记法,一步法)

    这个只需要遍历一次图像就能够完全标记了 我主要参考了WIKI和这位兄弟的博客 这两个把原理基本上该介绍的都介绍过了 我也不多说什么了 一步法代码相比两步法真是清晰又好看 似乎真的比两步法要好很多 代码如下 clear all close a
  • maven更改镜像路径为阿里镜像

    maven仓库默认在国外 使用难免很慢 尤其是下载依赖的时候 换为国内镜像 下载速度会变快很多 国内支持maven镜像的有阿里云 开源中国等 这里换为阿里云的 maven每更新一次镜像地址 都会重新下载一次包 修改方法 修改maven根目录
  • 使用socket选项SO_RCVTIMEO和SO_SNDTIMEO设置超时时间

    socket选项SO RCVTIMEO和SO SNDTIMEO 他们分别 用来设置socket接受 发送数据超时时间 因此 这两个选项仅对数据接收和发送相关的socket专用系统调用有效 send sendmsg recv recvmsg
  • KEIL环境下找不到core_cmInstr.h文件的处理

    从办公室拷贝的工程 好像缺文件了 编译报错 后来打开工程目录发现里面缺很多文件 其他一个项目的工程如下有特别多的文件 加了文件后再编译就好了
  • shell脚本实现彩色进度条

    代码 bin bash index 0 i 0 bar label while i le 100 do let index i 4 let colour 30 i 8 echo en e 1 colour m printf 100s d c
  • fopen w 和wb

    w 表示为文本文件 用则会把文件中的 0A 变为 0D0A 因为某些文件系统认为 0A 为文本文件的换行符 windows认为 0D0A 为文本文件的换行符 为了兼容其他文件系统 如从linux拷贝来的文件 windows上的fopen函数
  • Linux下的Nginx安装及web项目配置

    工作需要 记录一下 安装并运行Nginx Nginx是一款轻量级的网页服务器 反向代理服务器 相较于Apache lighttpd具有占有内存少 稳定性高等优势 安装Nginx首先要安装依赖的运行库 cd 至 usr local目录进行安装
  • 对于Quaternion的初步理解

    Quaternion 四元数 在unity中用于角度的旋转 Euler函数 返回一个旋转角度 绕z轴旋转z度 绕x轴旋转x度 绕y轴旋转y度 像这样的顺序 Quaternion Euler new Vector3 0 90 0 表示绕y轴旋
  • 键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出

    键盘输入一个字符串 统计每个字符出现的次数 并且按照结果格式输出 需求 aababcabcdabcde 获取字符串中每一个字母出现的次数 要求结果输出格式是 a 5 b 4 c 3 d 2 e 1 分析 A 定义一个字符串 B 定义一个Tr