[leetcode]Fraction to Recurring Decimal

来源:互联网 发布:市场营销面试数据分析 编辑:程序博客网 时间:2024/06/09 19:16

Problem

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)".

Java Solution

See internal comments in the code.

public String fractionToDecimal(int numerator, int denominator) {if (numerator == 0)return "0";if (denominator == 0)return ""; String result = ""; // is result is negativeif ((numerator < 0) ^ (denominator < 0)) {result += "-";} // convert int to longlong num = numerator, den = denominator;num = Math.abs(num);den = Math.abs(den); // quotient long res = num / den;result += String.valueOf(res); // if remainder is 0, return resultlong remainder = (num % den) * 10;if (remainder == 0)return result; // right-hand side of decimal pointHashMap<Long, Integer> map = new HashMap<Long, Integer>();result += ".";while (remainder != 0) {// if digits repeatif (map.containsKey(remainder)) {int beg = map.get(remainder); String part1 = result.substring(0, beg);String part2 = result.substring(beg, result.length());result = part1 + "(" + part2 + ")";return result;} // continuemap.put(remainder, result.length());res = remainder / den;result += String.valueOf(res);remainder = (remainder % den) * 10;} return result;}

转自:http://www.programcreek.com/2014/03/leetcode-fraction-to-recurring-decimal-java/


0 0