Найти самое длинное слово в строке рекурсивно - PullRequest
0 голосов
/ 28 марта 2011

Как найти самое длинное слово в строке рекурсивно?

EDIT

Закончено, всем спасибо. Вот пересмотренный код.

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 ]

1 голос
/ 24 июля 2012
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
 * 
 * */
1 голос
/ 28 марта 2011

Подсказка 1:

Разбейте проблему на две части:

  • разбить строку на первое слово и остальную часть строки
  • найди самый длинный из ...

Подсказка 2:

Эту проблему легче решить, если в исходной входной строке нет начальных и конечных пробелов.

1 голос
/ 28 марта 2011

Прежде всего давайте предположим, что аргумент строки предложения не имеет начальных или конечных пробелов.Вы делаете это для рекурсивного случая, вызывая trim (), который имеет смысл.

Затем нам нужно определить два случая, базовый случай и рекурсивный случай.

В базовом случае пробел не найден, то есть переданное предложение - всего одно слово.В этом случае просто верните предложение.

В рекурсивном случае мы получим первое слово, а остальные - как вы.Назовите longestWord для остальной части предложения.Затем просто верните самое длинное из первого слова и все, что было возвращено вашим рекурсивным вызовом.

0 голосов
/ 28 марта 2011

Попробуйте разбить строку, используя

 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;
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...