使用charAt()和循环检查字符串中是否出现多次字符

时间:2014-02-04 06:28:34

标签: java

代码为连续出现提供字符,而不是为字符串中的字符非连续重复提供字符。使用函数可以很容易,但我想使用循环并使用charAt进行比较。

int count = 0;
for (int i = 0; i < str.length(); i++) {        
    if(str.charAt(i)==str.charAt(i+1)) {
        count++;
    }
    return count;
}

3 个答案:

答案 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;
}

此函数还可以处理空和空字符串情况