gpt4 book ai didi

java - 计算字母数字字符的出现次数并以图形方式打印它们

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:58 24 4
gpt4 key购买 nike

我有一个字符串,我想计算所有字母和数字的出现次数,并想创建一个图表以便以图形方式查看出现次数。

例如:

String sentence = "ABC ABC ABC 123"

A (3) * * *
B (3) * * *
C (3) * * *
D
.
.

我的思路:

  1. 统计字符串中所有的数字和字母
  2. 打印所有星号乘以这个数字(遗憾的是我不能在 Java 中将 String 与 int 相乘)

我认为有两种计算字符的方法。我可以使用 charAt() 方法或 toCharArray() 循环遍历字符串或数组并对字母进行计数。

例如:

aCounter = 0;
bCounter = 0;
char ch = sentence.charAt(i);

for (i = 0; i < sentence.length(); ++i) {
if (ch == 'a') {
aCounter++;
}
if (ch == 'b') {
bCounter++;
}
}

但是,我在使用这种方法时遇到了多个问题:

  • 我需要创建很多计数器变量 - aCounterzCounter 加上 0counter9counter
  • 我将不得不创建另一个 for 循环来打印星号!

我不是在这里要求一个固定的答案,我只是在寻找一些好的方向,因为我被困住了。

最佳答案

没有必要为此制作HashTable/HashMap/HashSet

您提前知道正在跟踪哪些字符,因此您可以使用数组。

I want to count the occurrence of all letters and numbers

将要跟踪的字符组成一个字符串,然后初始化一个数组。

String sentence = "ABC ABC ABC 123";

//Make a map of all the characters you want to track.
String indexes = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

//Initialize an array to the size of the possible matches.
int[] count = new int[indexes.length()];

//Loop through the sentence looking for matches.
for (int i = 0; i < sentence.length(); i++) {
//This will get the index in the array, if it's a character we are tracking
int index = indexes.indexOf(sentence.charAt(i));

//If it's not a character we are tracking, indexOf returns -1, so skip those.
if (index < 0)
continue;

count[index]++;
}

然后你可以用这个打印出来:

for (int i = 0; i < count.length; i++) {
if (count[i] < 1)
continue;

System.out.println(String.format("%s (%d) %s",
indexes.charAt(i),
count[i],
//This little bit of magic creates a string of nul bytes, then replaces it with asterisks.
new String(new char[count[i]]).replace('\0', '*')));
}

如果您对 new String(new char[count[i]]).replace('\0', '*')) 位不满意,那么您可以使用StringBuilder 在尝试输出之前构建星号 String。您可以在下面查看 @mike 的示例,这是一个很好的例子。

输出

1 (1) *
2 (1) *
3 (1) *
A (3) ***
B (3) ***
C (3) ***

注意事项

在决定如何解决这个问题时,需要考虑以下几点。

  • 您是否始终知道需要提前跟踪哪些字符,或者有时您想要跟踪任何字符?在后一种情况下,数组对您不起作用;您需要使用高级数据结构,例如 TreeMap 或 HashMap。
  • 您是否总是计算特定 char 的出现次数,而不是 String?如果您必须修改它以计算 String,那么使用 String indexes 映射技巧也不适合您。
  • 您目前正在类(class)中学习特定的数据结构吗?通常,此类问题会分配给学生,以了解如何应用特定概念。正如 @kyle 建议的那样,您应该尝试在类里面使用您正在学习或已经学习过的数据结构。 有时使用您尚未了解的结构会给您带来麻烦,或者至少会降低成绩。

关于java - 计算字母数字字符的出现次数并以图形方式打印它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com