Java 如何使用循环和字符统计字符串中不同字符的数量?
只有在所有字符都不同的情况下,这才能提供正确的输出,但在第一个索引字符后有一些重复字符时,输出失败。请指导如何计算字符串中的不同字符Java 如何使用循环和字符统计字符串中不同字符的数量?,java,Java,只有在所有字符都不同的情况下,这才能提供正确的输出,但在第一个索引字符后有一些重复字符时,输出失败。请指导如何计算字符串中的不同字符 public int diff(String str) { int count = 0; char ch = str.charAt(0); for (int i = 0; i < str.length(); i++) { if (ch != str.charAt(i)) { count++;
public int diff(String str) {
int count = 0;
char ch = str.charAt(0);
for (int i = 0; i < str.length(); i++) {
if (ch != str.charAt(i)) {
count++;
}
}
return count+1;
}
}
public int diff(String str){
整数计数=0;
char ch=str.charAt(0);
对于(int i=0;i
一个明显的方法是收集集合中的可见字符,但使用排序字符数组可能更有效
char[] ary = str.toCharArray();
Arrays.sort(ary);
int count = 0, prev = -1;
for (char c : ary) if (c != prev) { count++; prev = c; }
您只需检查当前字符是否不在当前位置之前的字符串中 这应该可以做到:
public static int diff(String str) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
char current = str.charAt(i);
if (!str.substring(0, i).contains(current+"")) {
count++;
}
}
return count;
}
publicstaticintdiff(stringstr){
整数计数=0;
对于(int i=0;i
您需要一种方法来记住目前遇到的字符。您可以将它们存储在一个集合中,如下所示:
public static int diff(String str) {
Set<Character> chars = new HashSet<Character>();
for (int i = 0; i < str.length() - 1; i++) {
char ch = str.charAt(i);
if (!chars.contains(ch)) {
chars.add(ch);
}
}
return chars.size();
}
publicstaticintdiff(stringstr){
Set chars=new HashSet();
对于(int i=0;i
您的问题是,您只是将当前字符与之前的字符进行比较,而没有将所有字符进行比较。您可以这样修复它:
public int diff(String str) {
int count = 0;
// Loop through all the array
for (int i = 0; i < str.length(); i++) {
boolean seen = false
// Loop trying to match all the previous with the current
for(int j = 0; j < str.length(); j++) {
if (str.charAt(i) == str.charAt(i)) {
seen = true
}
}
// Count it if it's not been seen before
if seen == false {
count++
}
}
return count+1;
}
public int diff(String str){
整数计数=0;
//循环遍历所有数组
对于(int i=0;i
这样做的目的是尝试将当前字符str.charAt(i)
与之前的所有字符匹配
str.charAt(j)
。如果不清楚,请告诉我
这不是最有效的方法,但我试图匹配您在代码中所做的,并解释它的错误之处。可能短数组会更快。或多或少,你正试图用不同的问题来完成你的家庭作业请给我们举个例子?我正在尝试从字符串主题做一组问题这是我的想法。你太快了。这就是解决办法。记住已经检查过的字符。