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.youkuaiyun.com/crazy__chen/article/details/46573617