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

Java中的第一个循环字母

傅浩漫
2023-03-14

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

示例:在单词“statistics”中,重复出现的字母是s、t和i,但字母t的递归速度比字母s和i快,但我的程序返回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';
}

顺便说一下,getFirstRecuringLetter()将是一个比FRL更好的方法名。

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

  • 我需要实现一个循环的单链表数据结构。我无法理解的是何时何地必须声明列表的最后一个节点必须指向第一个节点。我有以下空构造函数来构建列表: 因此,基本上每个列表都以一个null对象开始,该对象再次指向null,表示列表结束: 然而,我不知道的是如何使它当列表包含至少一个节点时,该节点将指向列表的第一个节点。 例如,看看我为常规链表实现的addLast()方法: 我必须把它变成这样: 一旦列表的下一个节

  • 我将获取一个用户列表作为数组,对数据进行分页,并以表格的形式显示在视图中。 为了迭代数组,我使用 foreach 循环。但是我的前循环迭代不起作用。 这是一个示例数组,当我执行< code>print_r()时,我有< code>id、< code>email和< code>full_name字段,我想在视图中显示它们 这是我迭代数组的视图部分。结果存储在< code>$userList中。这个数

  • 感谢您的建议这是我第一次使用stackoverflow,因为我对编程相当陌生。我遇到的问题是,在执行while循环之后,我的程序没有请求名称。它似乎不在这一行之后执行。System.out.print(“输入减肥者的姓名:”);字符串名称=input.nextLine();有人能解释一下我可能错过了扫描器实用程序的使用吗。

  • 这是我在控制器中的getIndex()函数中的东西 所以我希望从循环中获取所有类别名称。 但是,例如,如果我希望通过在视图中执行此操作来获得结果 结果是 > 对象(类别)169(20){[“可填充”:受保护]= 字符串(3)“foo1” 第一个结果从哪里来,我如何摆脱它?谢谢!

  • 问题内容: 在python中,我该怎么做: 问题答案: 其他答案仅适用于序列。 对于任何迭代,请跳过第一项: 如果要跳过最后一个,可以执行以下操作: