题目链接
法一
public String fractionToDecimal(int numerator, int denominator) {
StringBuilder sb = new StringBuilder();
long a = numerator, b = denominator;
if (a > 0 && b < 0 || a < 0 && b > 0) {
sb.append("-");
}
a = Math.abs(a);
b = Math.abs(b);
sb.append(a / b);
if (a % b != 0) {
sb.append(".");
}
Map<Long, Integer> mp = new HashMap<>();
while ((a = a % b * 10) > 0 && !mp.containsKey(a)) {
mp.put(a, sb.length());
sb.append(a / b);
}
if (a == 0) {
return sb.toString();
}
return sb.insert(mp.get(a).intValue(), "(").append(")").toString();
}
本地测试
lay.showTitle(166);
Solution166 sol166 = new Solution166();
int numerator166 = 4;
int denominator166 = 333;
System.out.print(numerator166 + "/" + denominator166 + " = ");
System.out.println(sol166.fractionToDecimal(numerator166, denominator166));