feat: solve 9b
This commit is contained in:
parent
538b71a980
commit
13f372ec5a
@ -4,7 +4,34 @@ import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Streaming {
|
||||
public static <T> List<Pair<Integer, T>> encode(Stream<T> stream) {
|
||||
return null; // Modify this
|
||||
}
|
||||
public static <T> List<Pair<Integer, T>> encode(Stream<T> stream) {
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user