2
// Great Common Divisor3
private int gcd(int a, int b) {9
private int[] add(int[] a, int[] b) {10
if (a[0] == 0) return b;11
if (b[0] == 0) return a;12
int[] ret = new int[] {a[0] * b[1] + b[0] * a[1], a[1] * b[1]};17
int sign = ret[0] < 0 ? -1 : 1;19
int g = gcd(Math.min(ret[0], ret[1]), Math.max(ret[0], ret[1]));28
public String fractionAddition(String expression) {29
return Stream.of(expression.replaceAll("\\-", "+-").split("\\+"))30
.filter(s -> s.length() > 0)31
.map(s -> s.split("/"))32
.map(a -> new int[] {Integer.parseInt(a[0]), Integer.parseInt(a[1])})33
.reduce((a, b) -> add(a, b))34
.map(p -> p[0] + "/" + p[1])