我需要编写一个程序来计算String中重复字符的总数 . 例如,如果字符串是“gigi the gato”,则输出为7.('g'重复3次'i'重复2次't'重复两次 . )我需要使用嵌套循环 .
这就是我所拥有的 . 这个想法是正确的,但我的输出5是错误的 .
public class CountD {
public static void main(String[] args) {
String s1 = "gigi the gato";
s1 = s1.replace(" ", "");
int count = 0;
for (int i = 0; i < s1.length(); i++) {
for (int j = i + 1; j < s1.length(); j++) {
if (s1.charAt(i) == s1.charAt(j)) {
count++;
}
}
}
System.out.println(count);
}
}
问题是这个代码计算每个char重复的次数(如果它这样做)但它不包括char本身 . 其次,如果char重复两次以上,则每次出现后都会对此char进行额外计数 . 对不起,如果它令人困惑 . 无论如何,您可以自己跟踪代码 . 你能解决它并解释你是怎么做的吗?
5 回答
是否真的有必要使用嵌套循环?你可以试试这个:
如果您被允许使用流媒体:
使用外部
for
循环遍历相同的字符串,将计算已经一次又一次计数的相同字符 .用
while
循环替换外部for
循环,并在每次char检查后,从字符串中删除char:匹配时设置标志 . 一旦内部循环完成,基于标志增加计数 . 这可确保包含原始字符数 .
您可以使用
Stream
执行相同的操作: