zoukankan      html  css  js  c++  java
  • 【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))  //异号
    or
    if((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);
            }
        }
    };
  • 相关阅读:
    优先队列
    BFS和图的最短路径 279,127,126
    opencv常用函数
    图形图像概念
    缓存
    主板
    显卡
    cpu
    vs配置opencv(只需一次)
    附加依赖项、库目录、包含目录
  • 原文地址:https://www.cnblogs.com/luntai/p/5862823.html
Copyright © 2011-2022 走看看