我需要在字符串中找到一个既最长又偶数的单词。一些例子:
句子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];
}
}
}
答案 0 :(得分:1)
更改是您从最长的长度而不是> =进行比较,并检查长度是否是偶数。
要适应还有其他符号(如“。”)的情况,请使用Regex模式。
public static void main(String[] args) {
// TODO Auto-generated method stub
String input = "I am good.";
String[] input_words = input.split(" ");
String longestWord = " ";
for(String word : input_words) {
Pattern p = Pattern.compile("^[a-zA-Z]+");
Matcher m = p.matcher(word);
m.find();
if(m.group().length() % 2 == 0 && m.group().length() > longestWord.length()) {
longestWord = m.group();
}
}
System.out.println("result : " + longestWord);
}
这将打印出最大的第一个出现的偶数字
答案 1 :(得分:0)
使用%(模)运算符是一种常见的评估数字是奇数还是偶数的方法,方法是检查是否除以2会得出余数。您将在此处使用它,如下所示:
if (array[i].length() >= longestWord.length() && array[i].length() % 2 == 0) {
longestWord = array[i];
}
编辑:我感到很难过,因为这听起来像是一项作业,所以我不会解决问题的“即将到来”部分。
答案 2 :(得分:0)
您可以使用模运算符(string.length() % 2 == 0
)检查字符串长度是否为偶数:
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
要完成此操作,您可以使用Arrays.stream()
查找具有均匀长度的最长字符串:
<script src="node_modules/lodash/lodash.min.js"></script>
答案 3 :(得分:0)
public class HelloWorld {
public static void main(String []args) {
String sentence = "this is a sample input for the problem";
String arr[] = sentence.split("\\s+"); // to split the sentence by space (because words are separated by space)
int len = 0;
String word = "";
for (int i= 0; i< arr.length; i++) {
if((arr[i].length())%2 == 0) { // check if the length of the word is even
int len1 = arr[i].length();
if (len1 > len ) { // if new length is greater than the previous word's length then assign the value of new length to len variable
len = len1;
word = arr[i]; // word = highest length word
}
}
}
System.out.println(word);
}
}