-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path166-fractionToDecimal.java
More file actions
27 lines (26 loc) · 1.03 KB
/
166-fractionToDecimal.java
File metadata and controls
27 lines (26 loc) · 1.03 KB
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
import java.util.*;
class Solution_166 {
public String fractionToDecimal(int numerator, int denominator) {
StringBuilder res = new StringBuilder();
if(denominator == 0 || numerator == 0) return "0";
if((numerator < 0&& denominator>0)||(numerator > 0&& denominator<0)) res.append("-");
long divisor=Math.abs(Long.valueOf(denominator)), divided = Math.abs(Long.valueOf(numerator));
long reminder = divided % divisor;
res.append(String.valueOf(divided/divisor));
if(reminder == 0) return res.toString();
res.append(".");
Map<Long, Integer> map = new HashMap<>();
while(reminder != 0) {
if(map.containsKey(reminder)) {
res.insert(map.get(reminder), "(");
res.append(")");
break;
}
map.put(reminder, res.length());
reminder *= 10;
res.append(String.valueOf(reminder/divisor));
reminder = reminder%divisor;
}
return res.toString();
}
}