代码为连续出现提供字符,而不是为字符串中的字符非连续重复提供字符。使用函数可以很容易,但我想使用循环并使用charAt
进行比较。
int count = 0;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)==str.charAt(i+1)) {
count++;
}
return count;
}
答案 0 :(得分:3)
您的代码将抛出IndexOutOfBoundsException
。
你需要一个嵌套循环,因为现在你正在检查是否有两个相邻的相等字符。
做类似的事情(我不会向你展示解决方案,但我会指导你):
for (int i = 0; i < str.length() - 1; i++) {
another loop with index j {
if(str.charAt(i)==str.charAt(j)){
count++;
}
}
}
但是,正如@BrianRoach的评论中所建议的那样,如果您使用Map
,您将获得更好的解决方案:
您可以拥有Character
密钥和Integer
的值,表示char
出现的次数str.length() - 1
字符串。
修改强>:
编辑完成后,您只需将循环条件更改为{{1}}。
答案 1 :(得分:0)
试
int count = 0;
for (int i = 0; i < str.length() - 1; i++) {
for (int j = i + 1; j < str.length; j++) {
if(str.charAt(i)==str.charAt(j)){
count++;
}
}
return count;
}
答案 2 :(得分:0)
我知道这已经很晚了,但我没有提出复杂的回应:
public static boolean isitIsogram(String word){
int count = 0;
char check = ' ';
if(word == "" || word == null){
return false;
}
String newWord = word.toLowerCase();
char [] checkWord = newWord.toCharArray();
for (char i : checkWord){
if(check == i)
return false;
for(char j : checkWord){
if(i == j){
count++;
if(count > 1){
check = i;
}
}
}count = 0;
}
return true;
}
此函数还可以处理空和空字符串情况