Fraction to Recurring Decimal
2016-03-29 12:04
288 查看
思路:1、对分子为0的可以提前返回
2、结果为正负的判断
3、数组越界(最小负数除以-1)
4、对于遇到小数的开始要加上“.”,有小数后可以扩大被除数,对于是否有重复的地方要判断其被除数是否重复了!!!
对于abs()函数切记,先把数转换为长整型,然后再用abs(),否则最小负数是转换不了正数的!!!
2、结果为正负的判断
3、数组越界(最小负数除以-1)
4、对于遇到小数的开始要加上“.”,有小数后可以扩大被除数,对于是否有重复的地方要判断其被除数是否重复了!!!
对于abs()函数切记,先把数转换为长整型,然后再用abs(),否则最小负数是转换不了正数的!!!
class Solution { public: string fractionToDecimal(int numerator, int denominator) { string res; if(numerator==0) return "0"; if((numerator<0)^(denominator<0)) res+="-"; long long n=numerator; long long d=denominator; n=abs(n); d=abs(d); unordered_map<int,int> rep; bool isFract=false; while(true) { if(n<d) { if(isFract==false) { if(res==""||res=="-") res+="0."; else res+="."; isFract=true; } n*=10; } int r=n-n/d*d; if(r==0) { res+=to_string(n/d); return res; } else { if(isFract==true) { if(rep.find(n)==rep.end()) { res+=to_string(n/d); rep =res.size()-1; } else { int pos=rep ; res=res.substr(0,pos)+"("+res.substr(pos)+")"; return res; } } else res+=to_string(n/d); n=r; } } } };
相关文章推荐
- 国企,外企,还是民企?
- Swith-实现单例的四种方法
- ORACLE 日期加减操作
- mysqlbinlog: Character set '#45' is not a compiled character set and is not specified in the '/usr/s
- selenium-python安装
- C语言中的static
- Qt中配置Winpcap
- 2016第七届蓝桥杯C/C++ B组省赛第二题:生日蜡烛
- Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题
- JSON 教程
- http://elf8848.iteye.com/blog/875830/
- 【项目管理】 使用IntelliJ IDEA 将项目发布(提交)到GitLab
- js方法调方法写法
- Android--Activity四种启动模式
- 【转】数据库设计三范式理解
- 二叉树的存储结构
- 专业的通用性爬虫:ForeSpider数据采集系统
- Problem C
- windows环境中mysql忘记root密码的解决办法
- Ubunt 系统安装