Fraction to Recurring Decimal 2 - Teeeeeebag/LeetCode GitHub Wiki
- overflow - use long
- result is 0 - check if res is 0
- 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();
}
}