Fraction to Recurring Decimal 2 - Teeeeeebag/LeetCode GitHub Wiki

  1. overflow - use long
  2. result is 0 - check if res is 0
  3. result is negative - prepend "-" if len >1
public class Solution {
    public String fractionToDecimal(int numerator, int denominator) {
        long ln = (long) numerator, ld = (long) denominator;
        boolean isNeg = false;
        if (ln < 0){
            ln = -ln;
            isNeg = true;
        }
        if (ld < 0){
            ld = -ld;
            isNeg = !isNeg;
        }
        StringBuilder sb = new StringBuilder();
        long dec = ln/ld;
        if (ln%ld == 0){
            sb.append(dec);
        } else {
            sb.append(dec).append(".");
        }
        ln = ln%ld;
        HashMap<Long, Integer> hm = new HashMap<>();
        while (ln != 0){
            if(hm.containsKey(ln)){
                sb.insert(hm.get(ln), "(");
                sb.append(")");
                break;
            } 
            hm.put(ln, sb.length());
            ln = ln *10;
            long res = ln/ld;
            sb.append(res);
            ln = ln%ld;
        }
        if (isNeg && sb.length() > 1){
            sb.insert(0, "-");
        }
        return sb.toString();
        
    }
}