Java Solution
\nclass Solution {\n    public String fractionAddition(String expression) {\n        List<Integer> num = new ArrayList<>();\n        List<Integer> denom = new A
```\nclass Solution {\n    public String fractionAddition(String expression) {\n        List<Integer> num = new ArrayList<>();\n        List<Integer> denom = new ArrayList<>();\n        List<String> ope_ope_no_mi = new ArrayList<>();\n        int n = expression.length();\n        if(expression.charAt(0)!=\'-\'){\n            ope_ope_no_mi.add("+");\n        }\n        for(int i=0;i<n;i++){\n            if(expression.charAt(i)==\'-\' || expression.charAt(i)==\'+\'){\n                ope_ope_no_mi.add(expression.charAt(i)+"");\n            }\n        }\n        expression = expression.replace(\'+\',\'.\');\n        expression = expression.replace(\'-\',\'.\');\n        String[] fraction = expression.split("\\\\.");\n        for(String i: fraction){\n            if(i.length()>1){\n                String[] frac = i.split("/");\n                num.add(Integer.valueOf(frac[0]));\n                denom.add(Integer.valueOf(frac[1]));\n            }\n        }\n        n = num.size();\n        // System.out.println(num);\n        // System.out.println(denom);\n        // System.out.println(ope_ope_no_mi);\n        // System.out.print(lcm(denom, 0)+ "\\n");\n        int denominator = lcm(denom,0);\n        int numerator = 0;\n        for(int i=0;i<n;i++){\n            if(ope_ope_no_mi.get(i).equals("+")){\n                numerator += num.get(i)*(denominator/denom.get(i));\n            }else{\n                numerator -= num.get(i)*(denominator/denom.get(i));\n            }\n        }\n        \n        int div = gcd(numerator,denominator);\n        numerator /= div;\n        denominator /= div;\n        String sign = "";\n        \n        if(numerator<0 && denominator>0){\n             numerator *=-1;\n            sign = "-";\n        }\n        if(numerator>0 && denominator<0){\n             denominator *= -1;\n            sign = "-";\n        }\n        return sign+String.valueOf(numerator)+"/"+String.valueOf(denominator);\n    }\n    \n    public int gcd(int a, int b) { \n        return b == 0? a:gcd(b, a % b);    \n    }\n    \n    public int lcm(List<Integer> arr, int idx){\n        if (idx == arr.size()- 1){\n            return arr.get(idx);\n        }\n        int a = arr.get(idx);\n        int b = lcm(arr, idx+1);\n    return (a*b/gcd(a,b)); //\n  }\n}\n```
['Java']