2011-03-28 59 views
-1

可能重复:
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; 
     } 
    } 
+1

这是否需要递归地完成? – Mike 2011-03-28 20:48:17

+0

是的,这是大问题,我知道如何去做其他方式..这很容易。我被困在da的最后部分.. – user647207 2011-03-28 20:49:27

+1

老师的电子邮件是什么?我需要跟他/她说话... – 2011-03-28 20:52:41

回答

0

你只需要适应你的输出在其他情况 - 现在它返回(并输出)句子的其余部分,而您希望它返回剩下的最长单词。


要理解问题,请拿一个例句和一些纸张,并手工完成您的算法。

  • 首先,试一下简单的句子(一个单词,两个单词)。它似乎在这里工作。
  • 接下来,采取一个3字的句子,如"Was it right"?它在这里工作吗?如果不是,为什么?你需要改变什么?
+0

你是否适合适应.. – user647207 2011-03-28 20:53:57

+0

适应=改变。 – 2011-03-28 20:57:11

+0

我该如何修复 – user647207 2011-03-28 20:58:04

0

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

+0

我该如何解决这个问题.. – user647207 2011-03-28 20:57:40

+0

你想返回'first'和'longestWord(rest)'之间最长的单词,但是如果'longestWord(rest)'更长,你实际返回什么? – MByD 2011-03-28 21:00:40

+0

这个词是最长的.. – user647207 2011-03-28 21:03:22