如何递归地找到字符串中最长的单词?
完成,谢谢大家。这是修改后的代码。
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;
}
答案 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;
}
}