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)".
public class Solution { public String fractionToDecimal( int numerator, int denominator) { if (numerator== 0 ) return "0" ; if (denominator== 0 ) return "" ; String res="" ; if ((numerator< 0 )^(denominator< 0 )) res+= "-" ; long num = numerator; long den = denominator; num = Math.abs(num); den = Math.abs(den); long ans = num/den; res += ans; if (num%den== 0 ) return res; else res+= "." ; long t = num%den* 10 ; System.out.println(den); Map<Long,Integer> map = new HashMap<Long,Integer>(); while (t> 0 ){ if (map.containsKey(t)){ int mid = map.get(t); String part1 = res.substring(0 , mid); String part2 = res.substring(mid, res.length()); res = part1 + "(" + part2 + ")" ; return res; } map.put(t, res.length()); ans = t/den; System.out.println(ans); res += String.valueOf(ans); t = (t%den)*10 ; } return res; } }
原文链接http://blog.csdn.net/crazy__chen/article/details/46573617