Java
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```java []\nclass Solution {\n    public String fractionAddition(String expression) {\n        int nume=0;\n        int deno=1;\n        char[]ex=expression.toCharArray();\n        int i=0;\n        while(i<ex.length){\n            int currNume=0;\n            int currDeno=0;\n            boolean isNeg=(ex[i]==\'-\');\n            if(ex[i]==\'+\'){\n                i++;\n            }\n            else if(ex[i]==\'-\'){\n                isNeg=true;\n                i++;\n            }\n            while(i<ex.length && Character.isDigit(ex[i])){\n                int val=ex[i]-\'0\';\n                currNume=(currNume*10)+val;\n                i++;\n            }\n            i++;// to skip the devisor char \'/\';\n            if(isNeg){\n                currNume=-currNume;\n            }\n\n            while(i<ex.length && Character.isDigit(ex[i])){\n                int val=ex[i]-\'0\';\n                currDeno=(currDeno*10)+val;\n                i++;\n            }\n            nume=nume*currDeno+currNume*deno;\n            deno=deno*currDeno;\n        }\n        int gcd= Math.abs(findGCD(nume,deno));\n        nume/=gcd;\n        deno/=gcd;\n        return Integer.toString(nume)+"/"+Integer.toString(deno);\n\n    }\n     public static int findGCD(int a, int b) {\n        while (b != 0) {\n            int temp = b;\n            b = a % b;\n            a = temp;\n        }\n        return a;\n    }\n}\n```
['Java']