[Leetcode 166, Medium] Fraction to Recurring Decimal
来源:互联网 发布:算法实现约瑟夫环c语言 编辑:程序博客网 时间:2024/05/19 16:03
Problem:
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)".
Analysis:
Solutions:
C++:
string NumericToString(unsigned int num) { string s_num; if(num == 0) return "0"; while(num) { s_num.insert(s_num.begin(), num % 10 + '0'); num /= 10; } return s_num; } string fractionToDecimal(int numerator, int denominator) { string decimal; if(numerator == 0) return "0"; if((numerator < 0 && denominator > 0) || (numerator > 0 && denominator < 0)) decimal = "-"; unsigned long long num = (numerator < 0 ? -1 : 1) * static_cast<long long>(numerator); unsigned long long den = (denominator < 0 ? -1 : 1) * static_cast<long long>(denominator); unsigned long long quo = num / den; unsigned long long res = num % den; if(num == 0) return "0"; decimal.append(NumericToString(quo)); if(res == 0) return decimal; decimal.push_back('.'); num = res * 10; map<pair<unsigned long long, unsigned long long>, int> ress; string fraction; while(1) { quo = num / den; res = num % den; num = res * 10; if(res != 0 && ress.find(make_pair(quo, res)) == ress.end()) { fraction.push_back(quo + '0'); ress[make_pair(quo, res)] = fraction.size() - 1; num = res * 10; } else { if(res == 0) fraction.push_back(quo + '0'); break; } } if(res == 0) decimal.append(fraction); else { cout << fraction << endl; for(int i = 0; i < fraction.size(); ++i) { if(i == ress[make_pair(quo, res)]) { decimal.push_back('('); } decimal.push_back(fraction[i]); } decimal.push_back(')'); } return decimal; }Java:
Python:
0 0
- [Leetcode 166, Medium] Fraction to Recurring Decimal
- Leetcode 166. Fraction to Recurring Decimal (Medium) (cpp)
- leetcode 166: Fraction to Recurring Decimal
- [leetcode 166] Fraction to Recurring Decimal
- LeetCode(166) Fraction to Recurring Decimal
- Leetcode NO.166 Fraction to Recurring Decimal
- Leetcode 166 Fraction to Recurring Decimal
- LeetCode(166) Fraction to Recurring Decimal
- leetcode 166: Fraction to Recurring Decimal
- [Leetcode]#166 Fraction to Recurring Decimal
- [LeetCode 166] Fraction to Recurring Decimal
- LeetCode 166 Fraction to Recurring Decimal
- LeetCode(166) Fraction to Recurring Decimal
- leetcode(166) Fraction to Recurring Decimal
- LeetCode 166: Fraction to Recurring Decimal
- Leetcode 166 Fraction to Recurring Decimal
- LeetCode 166 Fraction to Recurring Decimal
- [leetcode] Fraction to Recurring Decimal
- 简单学习序列化
- java中的printStackTrace()方法
- js图片轮播
- LeetCode 205. Isomorphic Strings
- java的四种引用
- [Leetcode 166, Medium] Fraction to Recurring Decimal
- 学习jquery,每天进步一点点
- 一致性哈希算法
- 以为4天能搞定的项目,结果搞了近一个月……
- 浮点数的二进制表示学习笔记
- 知识储备:计算机网络
- poj1404题解
- 【BZOJ】1015 星球大战
- C++析构函数