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