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)".
Run time complexity is O(n), space complexity is O(n).
public class Solution { public String fractionToDecimal(int numerator, int denominator) { String result = ""; // 处理正负号 if (numerator > 0 && denominator < 0 || numerator < 0 && denominator > 0) { result += "-"; } long num = Math.abs((long) numerator); long den = Math.abs((long) denominator); // 处理小数点前的位数 result += num / den; if (num % den == 0) { return result; } // 如果num % den != 0说明有余数,加上小数点 result += "."; num %= den; HashMapmap = new HashMap (); num *= 10; while (num % den != 0 && !map.containsKey(num)) { map.put(num, result.length()); result += num / den; num %= den; num *= 10; } if (num % den == 0) { // fractional part is not repeating result += num / den; return result; } else { String str = result.substring(0, map.get(num)) + "(" + result.substring(map.get(num)) + ")"; return str; } } }
No comments:
Post a Comment