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

时间:2011-03-28 06:47:25

标签: java string recursion

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

修改

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

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;
}

4 个答案:

答案 0 :(得分:1)

提示1:

将问题分解为两部分:

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

提示2:

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

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
 * 
 * */

答案 3 :(得分:0)

尝试使用

拆分字符串
 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;
    }
 }