LeetCode(166) Fraction to Recurring Decimal
2015-12-07 15:02
393 查看
题目
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)”.
分析
由上描述,本题要求得整数相除的结果,对循环小数用括号扩之;首先,对于除数和被除数的特殊情况需分类处理;
然后,得到整数部分;
再次,分析小数部分,若有循环小数得到正确下标增加括号;
注意:整数的溢出问题;
先将int类型保存至long long类型;
AC代码
class Solution { public: string fractionToDecimal(int numerator, int denominator) { string str = ""; //除数为0,为异常情况 if (denominator == 0) return str; //被除数为0,结果为0 if (numerator == 0) return "0"; //异或,numerator<0和denominator<0仅有一个为真 if (numerator < 0 ^ denominator < 0) str += '-'; //转化为正数,INT_MIN转化为正数会溢出,故用long long;long long int n=abs(INT_MIN)得到的n仍然是负的,所以写成下面的形式 long long r = numerator; r = abs(r); long long d = denominator; d = abs(d); //得到整数部分并保存 str += to_string(r / d); r = r % d; //可以整除,直接返回 if (r == 0) return str; //添加小数点 str += "."; //下面处理小数部分,用哈希表 unordered_map<int, int> map; while (r){ //检查余数r是否在哈希表中,是的话则开始循环了 if (map.find(r) != map.end()){ str.insert(map[r], 1, '('); str += ')'; break; } map[r] = str.size(); //这个余数对应于result的哪个位置 //正常运算 r *= 10; str += to_string(r / d); r = r % d; } return str; } //整数到字符串的转换函数 string intToStr(long long num) { string str = ""; if (num < 10) { char c = num + '0'; return str + c; } else { while (num) { int d = num % 10; char c = d + '0'; str += c; num /= 10; }//while reverse(str.begin(), str.end()); return str; }//else } };
GitHub测试程序源码
相关文章推荐
- Java 理论与实践: 正确使用 Volatile 变量
- qad progress数据库启动出错解决
- 将商户后台_门店管理后台_平台后台管理v1.0 Axure RP项目上传到svn服务器步骤
- SQL递归查询(with cte as) 物料分解
- LeetCode(166) Fraction to Recurring Decimal
- listview adapter 常用适配器
- shutdownNow关不掉线程
- 网络层包
- 接收短信的广播
- (动态规划)ural 1073 Square Country
- git&gerrit 使用过程中遇到的问题及解决方法
- switch case显示当日周天信息
- android(34)(有序广播、无序广播、中断特定号码广播、监听SD卡状态、横竖屏切换)
- C++ 资源大全
- Fraction to Recurring Decimal
- 帝国CMS 调用标签的自带样式更改
- VBS/QTP 通过 telnet 数据库授权
- 友盟自定义分享面板
- 适用grunt的注意点
- css3瀑布流