zoukankan      html  css  js  c++  java
  • [leetcode72]166. Fraction to Recurring Decimal手动实现除法

    让人火大的一道题,特殊情况很多

    不过也学到了:

    java中int类型的最大值的绝对值比最小值的绝对值小1

    int最小值的绝对值还是负的,除以-1也是

    这种时候最好转为long类型进行处理

    long num = (long)numerator;
            long den = (long)denominator;
            //两种特殊情况,一种是分母为0,一种是可以直接处尽
            if (den==0)
                return "";
            if (num%den==0)
                return num/den+"";
            //记录结果
            StringBuilder res = new StringBuilder();
            //判断商是负数的情况,在结果前边添加负号
            if ((num<0&&den>0)||(num>0&&den<0))
                res.append("-");
            //全部化成正数,不然会每位都有负号
             num = Math.abs(num);
             den = Math.abs(den);
            //添加上整数部分和.
            res.append(num/den+".");
            //记录当前余数
            long temp = num%den;
            //记录每次分子对应的那一位结果的index和用来判断是否开始循环
            Map<Long,Integer> map = new HashMap<>();
            int sta = res.length();
            while (temp!=0)
            {
                //如果开始循环,跳出
                if (map.containsKey(temp))
                    break;
                //如果不是循环,那就记录位置
                map.put(temp,sta);
                //记录此次相除的结果
                res.append(temp*10/den);
                //更新余数
                temp= (((long)(temp*10))%den);
                //位置前移
                sta++;
            }
            //有两种情况会跳出循环,一种是没有余数了,直接返回,一种是商是循环小数
            if (temp==0)
                return new String(res);
            //查询开始循环的位置
            int left = map.get(temp);
            res.insert(left,"(");
            res.append(")");
            return new String(res);
  • 相关阅读:
    LeetCode "Super Ugly Number" !
    LeetCode "Count of Smaller Number After Self"
    LeetCode "Binary Tree Vertical Order"
    LeetCode "Sparse Matrix Multiplication"
    LeetCode "Minimum Height Tree" !!
    HackerRank "The Indian Job"
    HackerRank "Poisonous Plants"
    HackerRank "Kundu and Tree" !!
    LeetCode "Best Time to Buy and Sell Stock with Cooldown" !
    HackerRank "AND xor OR"
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8305659.html
Copyright © 2011-2022 走看看