gpt4 book ai didi

java - 使用递归查找句子中最长的单词(Java)

转载 作者:行者123 更新时间:2023-12-02 07:23:55 24 4
gpt4 key购买 nike

对于作业,我应该使用递归找到句子中最长的单词。我编写了一个方法,该方法获取句子的前两个单词,比较它们,然后获取两个单词中较长的一个,并将其与句子其余部分中的下一个单词进行比较。我的逻辑符合要求,但该方法无法正常工作。我认为有一个侥幸排除了空格,这就是它不起作用的原因。

public static String longestWord(String sentence)
{
if (sentence.indexOf(' ') == -1) { // IF sentence only has one word
return sentence;
}

String word1 =(sentence.indexOf(" ") != -1)? sentence.substring(0, sentence.indexOf(" ")):
sentence.substring(0);
String temp = sentence.substring(sentence.indexOf(" ")+1);


String word2 = null;
String rest = null;
if (sentence.indexOf(" ") != -1) {
word2 = (temp.indexOf(" ") != -1)? temp.substring(0, temp.indexOf(" ")+1):
temp.substring(0);
rest = temp.substring(temp.indexOf(" ")+1);
}


if (word1.length() > word2.length()) {
return longestWord(word1 + rest);

}

if (word2.length() > word1.length()) {
return longestWord(word2 + rest);

}

return sentence;


}

最佳答案

你在这里遇到了一些问题,但我认为困扰你的一个问题是你将 rest 设置为开头没有空格,但随后你就将一个单词连接到它的开头。所以“敏捷的棕色狐狸”->“快速棕色的狐狸”。

除此之外,如果这两个单词的长度相同,那么您将返回整个句子 - 相反,您应该将最后一个 if 语句设为 else 语句并删除最后的 return 语句。

编辑:虽然您可能不想扔掉已有的内容,但如果您反转焦点,您可能会发现递归解决方案更简单:而不是每次都取前两个单词,只取第一个单词并将其与其余单词中最长的单词进行比较:

longestWord(String sentence) {
if (sentence.indexOf(' ') == -1) { // IF sentence only has one word
return sentence;
}
String firstWord = getFirstWord(sentence);//how you're doing it now
String rest = getRest(sentence);//Just the sentence without the first word (and first space...)
String secondWord = longestWord(rest);
return firstWord.length >= secondWord.length ? firstWord : secondWord;
}

关于java - 使用递归查找句子中最长的单词(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com