当前位置: 首页 > 知识库问答 >
问题:

找到Java中的第一个循环字母

郭修平
2023-03-14

我编写了如下代码,但它没有正确返回第一个重复出现的字母。

示例:

在单词“统计”中,重复出现的字母是sti。但是字母t比字母si更早出现,但我的程序返回s而不是t

根据手头的任务,我需要做什么才能使用两个for循环返回t?

public class Main {
    public static char FRL(String word){
        for(int i = 0; i<word.length(); i++){
            for(int j = i+1; j<word.length(); j++){
                if(word.charAt(i) == word.charAt(j)){
                    return word.charAt(i);
                }
            }
        }
        return '0';
    }

    public static void main(String[] args) {
        String word = "statistics";
        if (FRL(word) != '0'){
            System.out.println(FRL(word));
        }else{
            System.out.println("No reccurring letter!");
        }
    }
}

共有1个答案

桂志新
2023-03-14

通过将遇到的每个字符存储在哈希集中,可以减少或消除嵌套循环并提高性能

public static char FRL(String word){
    Set<Character> seen = new HashSet<>();
    for(int i = 0; i < word.length(); i++) {
        char next = word.charAt(i);
        if (!seen.add(next)) {
            return next;
        }
    }
    return '0';
}

但是,如果您需要使用嵌套循环,那么您应该修复内部循环的初始化表达式和条件,即我们应该检查从索引0开始的字符,直到索引i为止的字符:

public static char FRL(String word) {
    for(int i = 0; i < word.length(); i++) {
        char next = word.charAt(i);
        for(int j = 0; j < i; j++){
            if(next == word.charAt(j)) {
                return next;
            }
        }
    }
    return '0';
}

顺便说一句,getFirstRecuring信()将是比FRL更好的方法名称。

 类似资料:
  • 我编写了如下代码,但它没有正确返回第一个重复出现的字母。 示例:在单词“statistics”中,重复出现的字母是s、t和i,但字母t的递归速度比字母s和i快,但我的程序返回s而不是t。 根据手头的任务,使用两个for循环返回t需要做什么?

  • 我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环 在这种情况下,我可以使用增强的for吗?

  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。

  • java中是否存在跳过for循环其余部分的令牌?类似VB的东西在Java中继续。

  • 你有什么想法,我怎么能得到字符串的第二个点后的第一个字符。 在第一种情况下,我应该得到,在第二种情况下我应该得到。我考虑用点分割字符串,并提取第三个元素的第一个字符。但这似乎很复杂,我认为还有更好的方法。

  • 问题内容: Java中是否有一个令牌可以跳过其余的for循环?Java中类似VB的Continue。 问题答案: 关键字将在调用时开始下一次迭代 例如 这将打印 看到 文件