码迷,mamicode.com
首页 > 其他好文 > 详细

166. Fraction to Recurring Decimal

时间:2016-06-05 06:30:08      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

    /*
     * 166. Fraction to Recurring Decimal
     * 12.10 by Mingyang
     * 我在这一题目里面犯的最大的错误就是不是用余数的重现来判断循环,而是用商的重复,这是不对的!
     * 另外没有很好地利用hashmap来存后面的第一次出现的index的值。
     * 所以这里的hashmap的值其实就是出现的长度
     * 不过学到如何把1转换成‘1’ char
     * String i = Integer.toString(se);
     * char a = i.charAt(0);
     */    
     public static String fractionToDecimal(int numerator, int denominator) {
            if (numerator == 0) return "0";
            if (denominator == 0) return "";       
            String ans = "";        
            //如果结果为负数
            if ((numerator < 0) ^ (denominator < 0)) {
                ans += "-";
            }        
            //下面要把两个数都转为正数,为避免溢出,int转为long
            long num = numerator, den = denominator;
            num = Math.abs(num);
            den = Math.abs(den);            
            //结果的整数部分
            long res = num / den;
            ans += String.valueOf(res);        
            //如果能够整除,返回结果
            long rem = (num % den) * 10;
            if (rem == 0) return ans;        
            //结果的小数部分
            HashMap<Long, Integer> map = new HashMap<Long, Integer>();
            ans += ".";
            while (rem != 0) {
                //如果前面已经出现过该余数,那么将会开始循环
                if (map.containsKey(rem)) {
                    int beg = map.get(rem); //循环体开始的位置
                    String part1 = ans.substring(0, beg);
                    String part2 = ans.substring(beg, ans.length());
                    ans = part1 + "(" + part2 + ")";
                    return ans;
                }            
                //继续往下除
                map.put(rem, ans.length());
                res = rem / den;
                ans += String.valueOf(res);
                rem = (rem % den) * 10;
            }        
            return ans;
        } 

 

166. Fraction to Recurring Decimal

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5560012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!