-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathFraction to Recurring Decimal.java
37 lines (32 loc) · 1.06 KB
/
Fraction to Recurring Decimal.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
public String fractionToDecimal(int numerator, int denominator) {
if(numerator == 0){
return "0";
}
StringBuilder sb = new StringBuilder("");
if(numerator<0 && denominator>0 || numerator>0 && denominator<0){
sb.append("-");
}
long divisor = Math.abs((long)numerator);
long dividend = Math.abs((long)denominator);
long remainder = divisor % dividend;
sb.append(divisor / dividend);
if(remainder == 0){
return sb.toString();
}
sb.append(".");
HashMap<Long, Integer> map = new HashMap<Long, Integer>();
while(remainder!=0){
if(map.containsKey(remainder)){
sb.insert(map.get(remainder), "(");
sb.append(")");
break;
}
map.put(remainder, sb.length());
remainder*= 10;
sb.append(remainder/dividend);
remainder%= dividend;
}
return sb.toString();
}
}