gpt4 book ai didi

java - 计算重复字母

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

我想要一个字符串计算字符串中的任何字母在字符串中出现的次数,并打印字母和数字所以我做了什么:

import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
String str;
Scanner in = new Scanner(System.in);
System.out.println("enter name");
str = in.nextLine();
char[] c1 = str.toCharArray();
int[] f = new int[str.length()];
for(int i=0;i<str.length();i++) {
for(int j=0;j<str.length();j++) {
if(c1[i]==c1[j]) {
f[i]++;
}
}
}
for(int k=0;k<c1.length;k++) {
for(int l=0;l<c1.length;l++) {
if(c1[k]==c1[l]) {
if(l!=k) {c1[k]=0;f[k]=0;}
}
}
System.out.println(c1[k]+"="+f[k]);
}
}
}

有两个问题:
1.当我打印时,它会打印重复的字母两次(或三次或更多,取决于该字母在字符串中出现的次数)。所以我添加了另外2个循环(k和l)来删除重复的字母,但现在它打印的不是重复的字母:一个正方形和一个零,我如何从字符中删除字母和数字, int 数组?(例如,当我插入名称“elichai”时,我得到:

e=1
l=1
(an square)=0
c=1
h=1
a=1
i=2

2.删除的字母是第二个字母而不是第一个
(在“elichai”示例中,它删除了第一个“i”而不是第二个“i”)谢谢!

最佳答案

解决您的问题的不同方法,但这就是我可能会这样做的方式:

String input = "Whatever";
Map<Character, Integer> charCounter = new LinkedHashMap<>(); // respects insertion order
for (char c : input.replaceAll("\\s+", "").toCharArray()) { // ignore spaces
Integer count = charCounter.get(c);
count = count == null ? 0 : count;
charCounter.put(c, count + 1);
}
System.out.println(charCounter);

关于java - 计算重复字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591051/

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