解题思路:
主要是将int型转为long型再处理,否则有些数字会溢出
提交代码:
class Solution {
public String fractionToDecimal(int numerator, int denominator) {
if(numerator==0||denominator==0) return "0";
StringBuilder res=new StringBuilder();
res.append(((numerator>0)^(denominator>0))?"-":"");
// integral part
long n=Math.abs((long)numerator); // 先long再abs
long d=Math.abs((long)denominator);
res.append(n/d);
n%=d;
if(n==0) return res.toString();
// fraction part
res.append(".");
Map<Long,Integer> map=new HashMap<>();
map.put(n,res.length());
while(n!=0) {
n*=10;
res.append(n/d);
n%=d;
if(map.containsKey(n)) {
res.insert(map.get(n), "(");
res.append(")");
break;
}else {
map.put(n,res.length());
}
}
return res.toString();
}
}