LeetCode-Fraction to Recurring Decimal-解题报告
2015-07-03 19:48
525 查看
原题链接https://leetcode.com/problems/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)".
模拟除法的过程,需要记录每次余数出现的位置。如果余数重复出现则有循环,然后再对应的位置插上括号。
每次都会碰到-2147483648,abs之后超出了int的最大值。。。
上次贴的代码有问题 。
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)".
模拟除法的过程,需要记录每次余数出现的位置。如果余数重复出现则有循环,然后再对应的位置插上括号。
每次都会碰到-2147483648,abs之后超出了int的最大值。。。
上次贴的代码有问题 。
class Solution { public: string fractionToDecimal(int numerator, int denominator) { bool sign = true; long long num = numerator, den = denominator, integer; if (num * den < 0)sign = false; num = abs(num); den = abs(den); integer = num / den; string Decimal = ""; unordered_map<int, int>vis; num = num % den; vis[num] = Decimal.length() + 1; while (num) { num *= 10; long long quotient = num / den; num = num % den; Decimal += (char)('0' + quotient); if (vis[num] != 0) { Decimal.insert(vis[num] - 1, 1, '('); Decimal.push_back(')'); break; } vis[num] = Decimal.length() + 1; } stringstream ss(""); ss << integer; if (Decimal != "")Decimal = "." + Decimal; if (sign) return ss.str() + Decimal; else return "-" + ss.str() + Decimal; } };
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解
- VisualStudio 使用Visual Leak Detector检查内存泄漏