zoukankan      html  css  js  c++  java
  • [LeetCode] 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)".

    Credits:
    Special thanks to @Shangrila for adding this problem and creating all test cases.

    Hide Tags
     Hash Table Math
     
     
      题目其实挺容易的,需要考虑的是溢出问题,long int 长度是32 位的, long long int 才是64位。
     
    #include <iostream>
    #include <unordered_map>
    #include <string>
    #include <sstream>
    using namespace std;
    
    class Solution {
    public:
        string fractionToDecimal(int numerator, int denominator) {
            bool flag1 = numerator<0;
            bool flag2 = denominator<0;
            unsigned numer = flag1?-numerator:numerator;
            unsigned denom = flag2?-denominator:denominator;
    
            if(denom==0)  return "";
            if(numer==0)    return "0";
            stringstream ss;
            ss<<numer/denom;
            string ret = ss.str();
            unsigned long long int lft = numer%denom;
    
            unordered_map<unsigned int,unsigned int> mp;
            string ret1="";
            unsigned int cnt = 1;
            while(lft){
                if(mp[lft]==0){
                    mp[lft]=cnt++;
                    ret1 += (lft*10)/denom + '0';
                    lft = (lft*10)%denom;
                    continue;
                }
                ret1 = ret1.substr(0,mp[lft]-1) + "(" + ret1.substr(mp[lft]-1) + ")";
                break;
            }
            if(ret1 != "")    ret += "." + ret1;
            if(flag1^flag2) ret = "-" + ret;
            return ret;
        }
    };
    
    int main()
    {
        Solution sol;
        cout<<sol.fractionToDecimal(-1,-2147483648)<<endl;
        return 0;
    }
  • 相关阅读:
    vuex插件
    axios
    token登录验证
    mysql模糊查询
    Koa2+Mysql搭建简易博客
    正则匹配器
    编码
    Maven学习
    防止重复提交保证幂等的几种解决方案
    策略模式优化if-else
  • 原文地址:https://www.cnblogs.com/Azhu/p/4382037.html
Copyright © 2011-2022 走看看