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

    166. Fraction to Recurring Decimal

    https://www.cnblogs.com/grandyang/p/4238577.html

    用一个哈希表判断余数是否重复,重复了就有无限循环小数,就可以停止加括号了

    class Solution {
    public:
        string fractionToDecimal(int numerator, int denominator) {
            int flag1 = numerator > 0 ? 1 : -1;
            int flag2 = denominator > 0 ? 1 : -1;
            long num1 = abs((long)numerator);
            long num2 = abs((long)denominator);
            long num = num1 / num2;
            long rem = num1 % num2;
            unordered_map<int,int> m;
            string res = to_string(num);
            if(flag1 * flag2 == -1 && (num != 0 || rem != 0))
                res = "-" + res;
            if(rem == 0)
                return res;
            res += ".";
            int index = res.size();
            while(rem){
                if(m.find(rem) != m.end()){
                    res.insert(m[rem],"(");
                    res += ")";
                    return res;
                }
                m[rem] = index;
                num = rem*10 / num2;
                rem = rem*10 % num2;
                res += to_string(num);
                ++index;
            }
            return res;
        }
    };

    自己又写了一遍

    class Solution {
    public:
        string fractionToDecimal(int numerator, int denominator) {
            if(denominator == 0)
                return "";
            bool flag;
            if((numerator >= 0 && denominator > 0) || (numerator <= 0 && denominator < 0))
                flag = true;
            else
                flag = false;
            long num1 = abs((long)numerator);
            long num2 = abs((long)denominator);
            long num = num1/num2;
            long rem = num1%num2;
            string res;
            res += to_string(num);
            if(!flag)
                res = "-" + res;
            if(rem == 0)
                return res;
            res += ".";
            unordered_map<long,int> m;
            int index = res.size();
            while(rem != 0){
                if(m.find(rem) != m.end()){
                    res.insert(m[rem],"(");
                    res += ")";
                    return res;
                }
                m[rem] = index;
                long tmp = rem*10/num2;
                rem = rem*10%num2;
                res += to_string(tmp);
                index++;
            }
            return res;
        }
    };
  • 相关阅读:
    oracle_jdbc_insert_into
    MySQL 性能比较测试:MySQL 5.6 GA -vs- MySQL 5.5
    centos去下载mysql应该怎么选择linux版本
    centos_radhat升级系统
    phpmyadmin 配置方法
    js 判断js函数,变量是否存在
    mysqlbinlog- 处理二进制日志文件的实用工具 学习笔记
    linux基本命令
    4 MySQL程序概述(包含mysql配置文件配置原理)-学习笔记
    Python学习笔记4 高级特性_20170618
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10937570.html
Copyright © 2011-2022 走看看