import java.util.Hashtable;
publicclass Solution {
public String fractionToDecimal(int numerator, int denominator) {
if (numerator == 0) return"0";
long num = Math.abs((long) numerator), den = Math.abs((long) denominator);
String ret = "";
if ((numerator + 0.0) / denominator < 0) ret += "-";
ret += num / den;
num = num % den;
if (num == 0) return ret;
else ret += ".";
Hashtable<Long, Integer> hashtable = new Hashtable<Long,Integer>();
int position = 0, start = 0, end = 0, index = ret.indexOf(".");
while (num != 0) {
position++; //the position after the digital pointif (hashtable.containsKey(num)) {
start = hashtable.get(num);
end = position - 1;
ret = ret.substring(0, index + start) + "(" + ret.substring(index + start, index + end + 1) + ")";
return ret;
} else {
hashtable.put(num, position);
num *= 10;
ret += num / den;
num %= den;
}
}
return ret;
}
}