For this Question: Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

It is guaranteed that the length of the answer string is less than 10<sup>4</sup> for all the given inputs.<b>User Task:</b>
Since this will be a functional problem, you don't have to take input. You just have to complete the function <b>fractionToDecimal()</b> that takes two Integers "numerator" and "denominator" as parameters.

<b>Constraints:</b>
0 &le; numerator, denominator &le; 2<sup>31</sup> - 1
denominator != 0Return the answer string.Sample 1:
Input: numerator = 1, denominator = 2
Output: "0.5"

Sample 2:
Input: numerator = 2, denominator = 1
Output: "2"

Sample 3:
Input: numerator = 4, denominator = 333
Output: "0.(012)", I have written this Solution Code: 
class Solution {
    public String fractionToDecimal(int num, int den) {

        String ans = "";
        
        // widening conversion to handle INT_MIN/INT_MAX
        long numerator = num; 
        long denominator = den;


        numerator = Math.abs(numerator);
        denominator = Math.abs(denominator);
        
        // does not have fraction part
        if (numerator % denominator == 0) {
            return ans + (numerator / denominator);
        }

        long quotient = numerator / denominator;
        long remainder = numerator % denominator;

        // real part
        ans += quotient + ".";

        ans += findFractionPart(remainder * 10, denominator);

        return ans;
    }

    String findFractionPart(long numerator, long denominator) {

        StringBuilder ans = new StringBuilder();
        Map<Long, Integer> remIdx = new HashMap<>(); // holds indexes of remainders
        int idx = 0;

        while (true) {

            long quotient = numerator / denominator;
            long remainder = numerator % denominator;

            if (remainder == 0) { // no recurring part present
                ans.append(quotient);
                break;
            }

            
            /*
                in order to have a recurring decimal, 2 conditions must satisfy
                1. remainder is repeating
                2. the quotients of repeating remainder positions MUST also match  
            */
            
            if (remIdx.containsKey(remainder) && 
                ans.charAt(remIdx.get(remainder)) == (quotient + '0')) { // same quotient
                
                // found recurring
                ans.insert(remIdx.get(remainder), "(");
                ans.append(")");
                break;
            } else {
				// no recurring
                ans.append(quotient);
                remIdx.put(remainder, idx);
            }

            // continue checking for next iteration
            idx++;
            numerator = remainder * 10;

        }

        return ans.toString();

    }
}
, In this Programming Language: Java, Now tell me if this Code is compilable or not?