首页 > 代码库 > 【Leetcode 166】 Fraction to Recurring Decimal
【Leetcode 166】 Fraction to Recurring Decimal
Description:
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)".
Solution:
long division: 长除法
Trick: Determining whether two nums have different sign(+ or -) can use follow codes:
if((n<0)^(d<0)) //异号orif((n>0)^(d>0)) //异号
Above code avoiding product‘s value overflow.
Code:
class Solution {public: string fractionToDecimal(int numerator, int denominator) { if(!numerator) return "0"; long long n = numerator, d = denominator; string ret = ""; if((n<0)^(d<0)) ret += ‘-‘; if(n < 0) n = -n; if(d < 0) d = -d; ret += to_string(n/d); if(n % d == 0){ return ret; }ret += ‘.‘; map<long long, int>hash; for(long long r = n % d; r; r %= d){ if(hash.find(r) != hash.end()){ ret.insert(hash[r],"("); ret += ")"; return ret; } hash[r] = ret.size(); r *= 10; ret += to_string(r / d); } }};
【Leetcode 166】 Fraction to Recurring Decimal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。