166. Fraction to Recurring Decimal
题目描述:Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.If the fractional part is repeating, enclose the repeating part in parentheses.
For example,
- Given numerator = 1, denominator = 2, return “0.5”.
- Given numerator = 2, denominator = 1, return “2”.
- Given numerator = 2, denominator = 3, return “0.(6)”.
题目大意:分数计算,除不尽的部分用()表示
代码
package HashTable; import sun.rmi.runtime.Log; import java.util.HashMap; import java.util.Map; /** * @author OovEver * 2018/1/14 16:48 */ public class LeetCode166 { public String fractionToDecimal(int numerator, int denominator) { if (numerator == 0) { return "0"; } StringBuilder res = new StringBuilder(); res.append((numerator > 0) ^ (denominator > 0) ? "-" : ""); long num = Math.abs((long) numerator); long den = Math.abs((long) denominator); res.append(num / den); num %= den; if (num == 0) { return res.toString(); } Map<Long, Integer> map = new HashMap<>(); res.append("."); map.put(num, res.length()); while (num != 0) { num *= 10; res.append(num / den); num %= den; if (map.containsKey(num)) { int index = map.get(num); res.insert(index, "("); res.append(")"); break; } else { map.put(num, res.length()); } } return res.toString(); } }