gpt4 book ai didi

java - 查找Java 8时尚中的最大单词数

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:09 24 4
gpt4 key购买 nike

需要找到词组中每个句子的最大词数。句子用?.!符号分隔。

我几乎已经完成了这项任务,但是我坚持以纯Java 8的方式来完成它,您能帮我吗?

public static void main(String[] args) {
assert solution("We test coders. Give us a try?") == 4;
assert solution("Forget CVs..Save time . x x") == 2;
assert solution("Some some! time . x x") == 2;
}

public static int solution(String S) {
return Arrays.stream(S.split("[.!?]"))
.map(String::trim)
.filter(s -> !s.isEmpty())
.max(Comparator.comparingInt(o -> o.split(" ").length))
.map(s -> s.split(" "))
.flatMap(...); // <-- what to do here?

}

最佳答案

只需按"\\s+"分割单词即可(因此您将忽略多个空格字符)。然后从max()获取IntStream值。

Arrays.stream(str.split("[.!?]"))
.map(String::trim)
.filter(s -> !s.isEmpty())
.mapToInt(s -> s.split("\\s+").length)
.max()
.orElse(0);

@Holger提出的更新答案:
Arrays.stream(str.split("\\s*+(?:[.!?]\\s*+)+"))
.mapToInt(s -> s.split("\\s+").length)
.max()
.orElse(0);

还有另一种实用的样式方法(只是为了好玩)。我怀疑您是否需要它:)
Stream.of(str)
.map(splittingBy("\\s*+(?:[.!?]\\s*+)+"))
.flatMap(Arrays::stream)
.map(splittingBy("\\s+"))
.mapToInt(arr -> arr.length)
.max()
.orElse(0);

...

static Function<String, String[]> splittingBy(String regex) {
return str -> str.split(regex);
}

关于java - 查找Java 8时尚中的最大单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55159951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com