feat: solve 9b
This commit is contained in:
@@ -4,7 +4,34 @@ import java.util.List;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class Streaming {
|
public class Streaming {
|
||||||
public static <T> List<Pair<Integer, T>> encode(Stream<T> stream) {
|
public static <T> List<Pair<Integer, T>> encode(Stream<T> stream) {
|
||||||
return null; // Modify this
|
return stream
|
||||||
}
|
.<List<Pair<Integer, T>>>collect(
|
||||||
|
ArrayList::new,
|
||||||
|
(acc, t) -> {
|
||||||
|
if (acc.isEmpty()) {
|
||||||
|
acc.add(new Pair<Integer, T>(1, t));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Pair<Integer, T> last = acc.get(acc.size() - 1);
|
||||||
|
if (last.getSnd().equals(t)) {
|
||||||
|
last.setFst(last.getFst() + 1);
|
||||||
|
} else {
|
||||||
|
acc.add(new Pair<>(1, t));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(pair1, pair2) -> {
|
||||||
|
if (pair1.isEmpty()) {
|
||||||
|
pair1.addAll(pair2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Pair<Integer, T> last = pair1.get(pair1.size() - 1);
|
||||||
|
Pair<Integer, T> first = pair2.get(0);
|
||||||
|
if (last.getSnd().equals(first.getSnd())) {
|
||||||
|
last.setFst(last.getFst() + first.getFst());
|
||||||
|
pair2.remove(0);
|
||||||
|
}
|
||||||
|
pair1.addAll(pair2);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user