zoukankan      html  css  js  c++  java
  • 166. Fraction to Recurring Decimal

    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 || denominator == 0) return "0";
            String sign = "";
            if(numerator > 0 && denominator < 0 || numerator < 0 && denominator > 0) sign = "-";
            long num = Math.abs((long) numerator);
            long den = Math.abs((long) denominator);
            long major = num / den;
            long rem = num % den;
            if(rem == 0) return sign + major;
            
            StringBuilder sb = new StringBuilder(sign + major + ".");
            HashMap<Long, Integer> map = new HashMap<>();  // long : rem  integer 在sb中的pos
            while(rem != 0){
                if(map.containsKey(rem)){    //相同的余数, 循环开始
                    int index = map.get(rem);
                    sb.insert(index -1 , "(").append(")");  //因为sb中已经包含的循环部分;所以直接插入()
                    break;
                }
                else{
                   sb.append(rem * 10 / den);
                   map.put((rem) % den , sb.length());
                }
                rem =rem * 10 % den;
            }
            return sb.toString();
        }
    }
  • 相关阅读:
    BMP图像信息隐藏
    多项式模2运算及求逆元
    day08 xml tomcat
    day07 c3p0连接池
    day06 多表查询
    java学习日记(day30--dbutils)
    java学习日记(29 JDBC)
    java学习日记(28)-- mysql基础
    activiti主要组件解析
    activiti流程跟踪图算法
  • 原文地址:https://www.cnblogs.com/joannacode/p/6132887.html
Copyright © 2011-2022 走看看