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.
For example,
- Given numerator = 1, denominator = 2, return "0.5".
- Given numerator = 2, denominator = 1, return "2".
- Given numerator = 2, denominator = 3, return "0.(6)".
public class Solution {
public String fractionToDecimal(int numerator, int denominator) {
if(numerator==0) return "0";
if(denominator==0) return "";
String res="";
if((numerator<0)^(denominator<0)) res+="-";
long num = numerator;
long den = denominator;
num = Math.abs(num);
den = Math.abs(den);
long ans = num/den;
res += ans;
if(num%den==0) return res;
else res+=".";
long t = num%den*10;
System.out.println(den);
Map<Long,Integer> map = new HashMap<Long,Integer>();
while(t>0){
if(map.containsKey(t)){
int mid = map.get(t);
String part1 = res.substring(0, mid);
String part2 = res.substring(mid, res.length());
res = part1 + "(" + part2 + ")";
return res;
}
map.put(t, res.length());
ans = t/den;
System.out.println(ans);
res += String.valueOf(ans);
t = (t%den)*10;
}
return res;
}
}