当前位置: 首页 > 知识库问答 >
问题:

在字符串数组中查找最长的字符串

慕容星晖
2023-03-14

问题是,我试图这么做,但我检查字符串长度的方法不起作用;我能做些什么来修复它?

public static void main(String[] args) { 
    String[] animalNames = {"cat", "rabbit", "horse", "goat", "rooster", "ooooooooooooooo"};
    String a= getLongestString(animalNames);
    System.out.println(a);
}

public static String getLongestString(String []animalNames) {
  //  String animalNames[] =  {"cat","chicken","horse","ooooooooo" };

    int j = 0;
    for (j = 0; j <= animalNames.length; j++) {
        if (animalNames[j].length() > animalNames[j + 1].length()) {
                return (animalNames[j]);
            }
        }
        return null;
    }

}

共有3个答案

马峻
2023-03-14

我认为不应该有数组。长度()否则您将得到ArrayIndexOutOfBoundException,因为我们不能对字符串数组使用length(),而是可以对特定的字符串长度使用length()。

劳研
2023-03-14

在这里1.使用j

你比较了AnimalNames[j 1]?-

并且你在第一个if条件中返回(AnimalNames[j]);-

好的,让我说清楚。在数组中找到最长的字符串。在数组上循环,然后比较两个附近的元素,然后返回较大的元素。使用你的代码,它将返回兔子。正当

你可能对流程感到困惑。有一个简单的方法。

  1. 您为第一个数组元素的长度分配了一个变量:elementL长=数组[0]。长度;和一个跟踪索引的值
  2. 您循环遍历数组您用这个变量检查每个元素,如果更大,则重新分配元素值并更新索引
  3. 循环结束。你有最大的长度和索引

代码:

int index = 0; 
int elementLength = array[0].length();
for(int i=1; i< array.length(); i++) {
    if(array[i].length() > elementLength) {
        index = i; elementLength = array[i].length();
    }
}
return array[index];

就是这样。

谭池暝
2023-03-14

使用java 8非常简单(只需先检查数组是否为空,或者专门处理.get()):

List<String> strings = Arrays.asList(animals);    
String longest = strings.stream().
    max(Comparator.comparingInt(String::length)).get();
int max = longest.length();

或者,如果你只需要长度:

int max = strings.stream().map(String::length).max(Integer::compareTo).get();

或者,如果你更喜欢一行,它是:

String longest = Arrays.asList(animals)
     .strings.stream().max(Comparator.comparingInt(String::length)).get();
=AND= 
int max = Arrays.asList(animals)
           .stream().map(String::length).max(Integer::compareTo).get();

好吧。。实际上是两行:——)享受吧!

更新:

strings.stream()可以直接使用Stream.of(动物)

 类似资料:
  • 问题内容: 在字符串数组中找到最长的字符串有一种简便的方法吗? 像什么? 问题答案: var longest = arr.sort(function (a, b) { return b.length - a.length; })[0]; 可能更有效,但仅自Javascript 1.8 / ECMAScript5起可用,并且在较旧的浏览器中默认不可用:

  • 问题内容: 这个问题与Python类似-在字典中查找最长(最多单词)键-但我需要纯字符数。 输入示例: 输出: 问题答案: 替代方法,与@jamylak的解决方案一样快,并且使用更多的pythonic: 查看比较:

  • 我有一个tweet数据库,其中实际的tweet文本在一个名为“text”的字段中。 我想知道如何查询并显示最长的tweet?我一直在想也许.排序或.长度或诸如此类的东西,但我环顾四周,到目前为止还没有找到任何有用的东西。 救命啊!谢谢!

  • 我如何在O(N**2)个时间内完成它?

  • http://articles.leetcode.com/2011/11/lengton-palindromic-substring-part-i.html 我处理这个问题的领域是用java编写代码,使用简单的强力解决方案,然后使用o(n2)方法,没有额外的空间,就像现在这样。http://www.geeksforgeeks.org/lengte-palindromic-substring-set

  • 问题内容: 我在以下几行中遇到问题,其中未初始化的数组/没有元素。 有什么可能的解决方案? 问题答案: 由于尚未初始化,因此没有长度,其值为。但是,编译器甚至不允许您按 原样 编译该代码,从而引发以下错误: 变量car可能尚未初始化 。 您需要先对其进行初始化,然后才能使用: 如果需要初始化一个空数组,可以使用以下命令: 如果需要使用特定的大小初始化它,以便填充某些位置,可以使用以下命令: 但是,