gpt4 book ai didi

java - 使用 java 的 for 循环计算给定字符串中某个字符的出现次数

转载 作者:行者123 更新时间:2023-12-02 02:07:29 25 4
gpt4 key购买 nike

这是引用代码:

    // Create an array of size 256 i.e. ASCII_SIZE
int count[] = new int[MAX_CHAR];

int len = str.length();

// Initialize count array index
for (int i = 0; i < len; i++)
count[str.charAt(i)]++;

// Create an array of given String size
char ch[] = new char[str.length()];
for (int i = 0; i < len; i++) {
ch[i] = str.charAt(i);
int find = 0;
for (int j = 0; j <= i; j++) {

// If any matches found
if (str.charAt(i) == ch[j])
find++;
}

if (find == 1)
System.out.println("Number of Occurrence of " +
str.charAt(i) + " is:" + count[str.charAt(i)]);
}

输出应该类似于:

Number of occurrence of 'x' is: 'times it occured'

如果该字母之前出现过,则仅显示该字母一次。

<小时/>

我使用 2 个 for 循环得到逻辑,尽管我的老师说只使用 1 个 for 循环就可以执行这个应用程序。

我遇到的问题是:
仅当角色彼此相邻时,我才能确定该角色是否已被找到。

您如何在没有另一个 for 循环的情况下检查是否已找到所有先前的字符?

最佳答案

使用 Map<Integer, Integer> (键:字符,值:字符数)来存储您的字符数。

你只需要循环你的角色一次:

String input = "this is input string";
Map<Integer, Integer> charCount = new LinkedHashMap<>();
for (int c : input.toCharArray()) {
if (!charCount.containsKey(c)) {
charCount.put(c, 1);
} else {
charCount.put(c, charCount.get(c) + 1);
}
}

// Here you print the char count:
for (Entry<Integer, Integer> entry : charCount.entrySet()) {
// (char) entry.getKey() is the character
// entry.getValue() is number of occurence
}

没有Map :

int[][] count = new int[MAX_CHAR][2];
for (int c : input.toCharArray()) {
count[c][0] += 1; // Increase occurrence by 1
count[c][1] = 1; // Mark this character exists in string
}
// Here you can print the count of char per character
// Not that, you can use count[c][1] to determine that if the character exists in your String
for (int i = 0; i < MAX_CHAR; i++) {
if (count[i][1] == 1) {
System.out.println("Char: " + (char) i + " Occurence: " + count[i][0]);
}
}

编辑正如 @oreh 所建议的,我们甚至不需要二维数组:

int[] count = new int[MAX_CHAR];
for (int c : input.toCharArray()) {
count[c][0] += 1; // Increase occurrence by 1
}
for (int i = 0; i < MAX_CHAR; i++) {
if (count[i] > 0) {
System.out.println("Char: " + (char) i + " Occurence: " + count[i]);
}
}

关于java - 使用 java 的 for 循环计算给定字符串中某个字符的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544543/

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