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)".
Difficulty: Medium
public class Solution {
public String helper(long numerator, long denominator) {
Boolean repeat = false;
String ans = "";
int index = 0;
HashMap<Long, Integer> map = new HashMap<Long, Integer>();
while(numerator != 0){
numerator *= 10;
if(map.containsKey(numerator)){
repeat = true;
ans = ans.substring(0, map.get(numerator)) + "(" + ans.substring(map.get(numerator)) + ")";
break;
}
map.put(numerator, index);
ans = ans + Long.toString(numerator/denominator);
numerator = numerator % denominator;
index++;
}
return ans;
}
public String fractionToDecimal(int numerator, int denominator) {
Boolean isNegative = true;
if(denominator == 0 || numerator == 0) return "0";
if((numerator > 0 && denominator > 0) || (numerator < 0 && denominator < 0)){
isNegative = false;
}
long den = Math.abs((long)(denominator));
long num = Math.abs((long)(numerator));
String ans = "";
ans = Long.toString(num / den);
num = num % den;
if(isNegative == true){
ans = "-" + ans;
}
if(num == 0) return ans;
ans = ans + '.';
return ans + helper(num, den);
}
}