• 166. Fraction to Recurring Decimal


        /*
         * 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;
            } 
  • 相关阅读:
    阿里云ecs环境配置
    linux下Nginx安装Zend Optimizer组件步骤
    phpcms 按价格、按销量、按时间等排序实现思路
    云服务器 ECS Linux Web 环境配置站点的方法
    CentOS7安装和配置FTP
    Centos7安装SVN
    ExtJs桌面组件(DeskTop)
    jsapi支付,提示redirect_uri 参数错误
    php判断来源网址地址并且限制非法来源
    php正则表达式获取表格内容
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5560012.html
Copyright © 2020-2023  润新知