以递归方式查找字符串中最长的单词

如何递归地找到字符串中最长的单词?

编辑

完了,谢谢大家。 这是修改后的代码。

public static String longestWord(String sentence) { String longest; int i = sentence.indexOf(' '); if (i == -1) { return sentence; } String first = sentence.substring(0,i); first = first.trim(); String rest = sentence.substring(i); rest = rest.trim(); longest = stringcompare(first,longestWord(rest)); return longest; } 

首先,让我们假设句子字符串参数没有任何前导或尾随空格。 你正在通过调用trim()来做递归的情况,这是明智的。

然后我们需要定义两种情况,基本情况和递归情况。

基本情况是找不到空格,即传入的句子只是一个单词。 在这种情况下,只需返回句子。

在递归的情况下,我们得到第一个单词,其余的就像你所做的那样。 在句子的其余部分打电话给longestWord。 然后简单地返回第一个单词中最长的单词以及递归调用返回的内容。

提示1:

将问题分解为两部分:

  • 将字符串拆分为第一个单词和字符串的其余部分
  • 找到最长的……

提示2:

如果初始输入字符串中没有前导和尾随空格,则问题更容易解决。

 package com.kota.java; import java.util.*; class LongestWord{ String str = "Ram is intelligent boy"; String stringArray[] = str.split("\\s"); public String compare(String st1, String st2) { if (st1.length() > st2.length()) { return st1; } else { return st2; } } LongestWord() { String word = ""; for (int i = 0; i < stringArray.length; i++) { if (i == 0) { word = stringArray[0]; } word = compare(word, stringArray[i]); } System.out.println("Longest word = " + word); } public static void main(String[] args) { new LongestWord(); } } /** * Out put : Longest word = intelligent * * */ 

尝试使用分割字符串

  String[] words = sentance.split(" "); String longest = null; String longestSize = 0; for (String str: words) { int size = str.length(); if (longestSize < size) { longest = str; longestSize = size; } }