如何避免内部循环并仅使用流功能编写此“分配”?
编辑:我想要一个链接在一起的所有唯一对的列表,存储在l2. 示例:输入:String[] l = { "a", "a", "b", "c", "d", "d", "d", "d", "a", "a", "b", "b", "c", "d" };,输出:[a, a, b, c, d, d, b, b, c, d]。
String[] l = { "a", "a", "b", "c", "d", "d", "d", "d", "a", "a" };
String[] l2 =
IntStream.iterate(0, i -> i < l.length, i -> i + 2)
.mapToObj(i -> Objects.hash(l[i], l[i + 1]))
.distinct()
.map(h -> {
for (int j = …Run Code Online (Sandbox Code Playgroud) 如果不是,女巫复杂性会是什么?谢谢:
public static int f(int n, int x) {
for (int i = n; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
x += j; // Assume, this operation costs 1.
}
}
return x;
}
Run Code Online (Sandbox Code Playgroud) 示例: 输入:abc565xyz 输出:16 哪种变体更好?谢谢。
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).reduce(0, (i0, i1) -> i0 + Character.digit(i1, 10));
}
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).mapToObj(a -> a - '0').reduce(0, (a, b) -> a + b);
}
public static int sumOfDigits(String s) {
return s.chars().filter(Character::isDigit).mapToObj(a -> Character.digit(a, 10)).reduce(0, Integer::sum);
}
Run Code Online (Sandbox Code Playgroud)