首页 > 解决方案 > 如何在字符串中找到最长的偶数单词

问题描述

我需要在一个字符串中找到一个既最长又均匀的单词。几个例子:

这句话Time to construct great art。这应该返回字符串time,因为它是最大even长度的单词,长度为4,而不是construct因为构造9是奇数的长度。

此外,在 的示例中Time to write great code。这应该返回字符串Time,因为它是偶数,并且具有偶数长度4。它不会返回单词code,因为Time先发生。

        String[] array = sentence.split(" ");
        String longestWord = " ";

        for (int i = 0; i < array.length; i ++) {
            if (array[i].length() >= longestWord.length()) {
                longestWord = array[i];
            }
        }

        System.out.println(longestWord);

我的代码成功打印了最长的单词,但是没有考虑最长的字符串长度是否是偶数以及它是否首先出现。

我尝试在我的 for 循环中使用一些模数字符,但它没有跟踪最大的单词是否是偶数,如果不是,则移动到下一个最大的单词。

另外,我很难跟踪这个词是否先出现。

我尝试过的甚至是:

for (int i = 0; i < array.length; i ++) {
            if (array[i].length() >= longestWord.length()) {
                longestWord = array[i];
                if (longestWord.length() % 2 != 0) {
                    break;
                }
                else {
                    longestWord = array[i];
                }
            }
        }

标签: javaarrays

解决方案


您可以使用模运算符 ( %) 来检查字符串长度是否为偶数:

string.length() % 2 == 0

要完成它,您可以使用它Arrays.stream()来查找具有偶数长度的最长字符串:

String longestWord = Arrays.stream(sentence.split(" ")) // creates the stream with words
        .filter(s -> s.length() % 2 == 0) // filters only the even length strings
        .max(Comparator.comparingInt(String::length)) // finds the string with the max length
        .orElse(" "); // returns " " if none string is found

推荐阅读