java - 如何在字符串中找到最长的偶数单词
问题描述
我需要在一个字符串中找到一个既最长又均匀的单词。几个例子:
这句话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];
}
}
}
解决方案
您可以使用模运算符 ( %
) 来检查字符串长度是否为偶数:
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
推荐阅读
- inno-setup - Inno 编译器设置的 PermissionError
- reactjs - 如何在反应中使用子组件方法?
- sql-server - Excel:从 SQL Server 和云中刷新 Excel 表的最佳方式?
- php - 表中重复项记录显示
- android - 在 Android 中使用带有 MultipartBody 的 Retrofit 2 发布图像时 EXIF 详细信息丢失?
- javascript - 更改另一个输入框时启用下一个输入框的最佳方法是什么
- python - Python:辅助窗口没有完全破坏
- python - 如何在 lambda 函数中创建图层
- javascript - 无法重置简单的单选按钮 - React JS
- javascript - 删除 HTML 页面中不在元素标签内的文本