gpt4 book ai didi

Java 8 Stream,根据几个条件获取字符串长度

转载 作者:行者123 更新时间:2023-11-30 01:54:09 29 4
gpt4 key购买 nike

我有一个程序可以计算 d 的出现次数,例如 s = "dda"n = 10 我将重复这些直到我得到 s.length = 10 例如 ddaddaddad result = 7d

我已经在基础循环中完成了此操作:

int count = 0;
String s = "dda";
int n = 10;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'd')
count++;
}

for (int i = 0; i < n % s.length(); i++) {
if (s.charAt(i) == 'd')
count++;
}
return count * (n / s.length());

因此,我尝试使用流来做到这一点,我想知道如何做到这一点?

我已经取得的成就:

return s.chars().filter(x -> x == 'd').count() * (n / s.length()) + (n % s.length());

我知道最后一部分的问题(n % s.length())我需要检查索引是否包含d,但我不'不知道该怎么做。

最佳答案

您需要添加到计算中的只是通过提醒对 s 进行子串并重复计数:-

    return s.chars().filter(x -> x == 'd').count() * (n / s.length()) +
s.substring(0, n % s.length()).chars().filter(x -> x == 'd').count();

编辑:如果出于某种原因,您不喜欢老式的子字符串,您可以将其替换为从 0 到提醒的整数流:

    return s.chars().filter(x -> x == 'd').count() * (n / s.length()) +
IntStream.range(0, n % s.length()).filter(i -> s.charAt(i)== 'd').count();

但是,问题仍然是这个全流版本是否更全面/更具可读性。

关于Java 8 Stream,根据几个条件获取字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55075732/

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