zoukankan      html  css  js  c++  java
  • 166.Fraction to Recurring Decimal

    class Solution {
    public:
        string fractionToDecimal(int numerator, int denominator) {
            if(numerator==0) return "0";
            string result;
            if(numerator<0 ^ denominator<0 ) result+='-';   //异或,numerator<0和denominator<0仅有一个为真
            //转化为正数,INT_MIN转化为正数会溢出,故用long long。long long int n=abs(INT_MIN)得到的n仍然是负的,所以写成下面的形式。
            long long int n=numerator,d=denominator;
            n=abs(n);d=abs(d);              
            
            result+=to_string(n/d);  //整数部分
            long long int r=n%d;    //余数r
            if(r==0) return result;
            else result+='.';
            //下面处理小数部分,用哈希表
            unordered_map<int,int> map;
            while(r){
                //检查余数r是否在哈希表中,是的话则开始循环了
                if(map.find(r)!=map.end()){
                    result.insert(map[r],1,'(');   //http://www.cplusplus.com/reference/string/basic_string/insert/
                    result+=')';
                    break;
                }
                map[r]=result.size();    //这个余数对应于result的哪个位置
                //正常运算
                r*=10;
                result+=to_string(r/d);
                r=r%d;
            }
            return result;
        }
    };
    
  • 相关阅读:
    Spring (4)框架
    Spring (3)框架
    Spring (2)框架
    javaSE面试题总结 java面试题总结
    分层结构
    三次握手
    17_网络编程
    16_多线程
    Ecplise中指定tomcat里Web项目发布文件
    Web 项目没有发布到我们安装的tomcat目录下
  • 原文地址:https://www.cnblogs.com/smallredness/p/10694100.html
Copyright © 2011-2022 走看看