LeetCode之Fraction to Recurring Decimal
2015-09-01 11:23
295 查看
/*思路: 1.计算整数部分;这里主要注意,分子绝对值小于分母绝对值且分子分母异号时,要返回“-0”。 2.计算小数部分;思路:用一个hash表记住出现过的余数以及余数对应的位置,如果当前用于计算 小数的余数在hash表中存在,则应返回结果,注意添加循环小数的括号。 3.合并整数、小数部分,返回结果。 整体来说,思路相对简单,但是写代码时有很多细节需要注意。*/ class Solution { public: string fractionToDecimal(int numerator, int denominator) { string s0 = interger(numerator, denominator); string s1 = decimal(numerator, denominator); if(s1.empty()) return s0; else return s0 + "." + s1; } string interger(long long numerator, long long denominator){//计算整数部分 string res; long long num = numerator / denominator; stringstream s; s << num; s >> res; if(res == "0" && numerator * denominator < 0) res.insert(0, "-"); return res; } string decimal(int numerator, int denominator){//计算小数部分 long long n = numerator, d = denominator; if(n < 0) n = -n; if(d < 0) d = -d; if(n >= d) n %= d; unordered_map<int, int> appeared; string res; int count(0); while(n != 0){ if(appeared.find(n) != appeared.end()){//余数出现过 res.insert(appeared , "("); res += ")"; return res; } else{//余数未出现过 appeared = count; n *= 10; int tmp = n/d; n %= d; res += ('0' + tmp); } ++count; } return res; } };
相关文章推荐
- 《PCI EXPRESS体系结构导读》读书笔记之存储器域与PCI总线域
- swift 中#pragma mark 表示方法
- 文本溢出、字符串过长截取多余文字并用省略号显示
- JS实现黑客帝国文字下落效果
- ctag 简述
- extern + const处理
- 穷人缺少什么
- 无法定位序数341于动态链接库于SSLEAY.DLL上
- Toast 显示文本,图片,及图文
- iOS断言 NSAssert的使用
- CGAffineTransformMakeTranslation, CGAffineTransformTranslate, CGAffineTransformIdentity
- bootstrap中常用的插件及示例
- 计算图片HOG特征
- 30、ADO.NET、事务、DataSet
- Programming Ability Test学习 1036. 跟奥巴马一起编程(15)
- [树结构]有实际用途的树的计算公式
- android:scaleType 属性设置
- android菜鸟进阶之路——照相机的调用(拍照和裁剪)
- Android_Palette抽取Bitmap颜色
- 浅谈Sql Server中的 隔离层级(Isolation Levels)