[leetcode]Fraction to Recurring Decimal

来源:互联网 发布:淘宝吉他店铺介绍 编辑:程序博客网 时间:2024/05/01 13:54

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.

整数部分和小数部分分开来做。用long long是因为分子分母取INT_MIN时取绝对值int型会溢出

class Solution {public:    string fractionToDecimal(int numerator, int denominator) {        if(numerator==0) return "0";        string ans= "";        if(numerator>0 ^ denominator>0) ans+='-';        long long num=(long long)numerator;           long long den=(long long)denominator;        num = abs(num);        den = abs(den);        long long res=num/den;        long long rem=num%den;        if(rem==0) return (ans+to_string(res));        else{            map<long long,int> m;            ans += to_string(res) + '.';            string str = "";            for(int pos =0;rem!=0;pos++){                if(m.find(rem)!=m.end()){                    str.insert(m[rem],"(");                    str +=')';                    return ans+str;                }                 m[rem]=pos;                str += to_string(rem*10/den);                rem = rem*10%den;            }            return ans+str;        }    }};
0 0
原创粉丝点击