Leetcode Fraction to Recurring Decimal

来源:互联网 发布:linux高级运维 编辑:程序博客网 时间:2024/06/06 13:58

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)".

Difficulty: Medium


public class Solution {    public String helper(long numerator, long denominator) {        Boolean repeat = false;        String ans = "";        int index = 0;        HashMap<Long, Integer> map = new HashMap<Long, Integer>();        while(numerator != 0){            numerator *= 10;            if(map.containsKey(numerator)){                repeat = true;                ans = ans.substring(0, map.get(numerator)) + "(" + ans.substring(map.get(numerator)) + ")";                break;            }            map.put(numerator, index);            ans = ans + Long.toString(numerator/denominator);            numerator = numerator % denominator;            index++;        }        return ans;    }    public String fractionToDecimal(int numerator, int denominator) {        Boolean isNegative = true;        if(denominator == 0 || numerator == 0) return "0";        if((numerator > 0 && denominator > 0) || (numerator < 0 && denominator < 0)){            isNegative = false;        }         long den = Math.abs((long)(denominator));        long num = Math.abs((long)(numerator));        String ans = "";        ans = Long.toString(num / den);        num = num % den;        if(isNegative == true){           ans = "-" + ans;         }         if(num == 0) return ans;        ans = ans + '.';        return ans + helper(num, den);            }}


0 0