java中最长的单词递归

时间:2011-03-28 20:45:58

标签: java string

  

可能重复:
  How can I find the longest word in a string recursively?

我需要帮助找到java中最长的单词..我认为我的基本情况正确,但递归对我不起作用..任何帮助都会受到赞赏..

public static String longestWord(String sentence) {

        int spaceIndex = sentence.indexOf(" ");

        if (spaceIndex == -1) {
            return sentence;
        }

        String firstWord = sentence.substring(0, spaceIndex);

        String rest = sentence.substring(spaceIndex);
        rest = rest.trim();

        if (firstWord.length() >= longestWord(rest).length() ) {
            IO.outputStringAnswer(firstWord);
            return firstWord;
        }
        else {
            IO.outputStringAnswer(rest);
            return rest;
        } 
    }

2 个答案:

答案 0 :(得分:0)

你必须在else的情况下调整你的输出 - 现在它返回(并输出)句子的其余部分,而你希望它返回剩下的最长的单词。


要理解这个问题,请拿一个例句和一些文章,然后手工制作算法。

  • 首先,尝试简单的句子(一个单词,两个单词)。它似乎在这里工作。
  • 接下来,请使用"Was it right"之类的3个字的句子。它在这里有用吗?如果没有,为什么?你需要改变什么?

答案 1 :(得分:0)

这几乎是正确的,但你在else块中返回了错误的值。