国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Leetcode 166. Fraction to Recurring Decimal

2019-11-11 03:22:30
字體:
供稿:網(wǎng)友

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)”.

s思路: 1. 這道題的難點,就是如何把循環(huán)小數(shù)找出來,即:開始的地方。例如:這里寫圖片描述 2. 把每次余數(shù)的值和對應(yīng)的商的位置的映射關(guān)系存在map里,方便查詢! 3. 這種設(shè)計兩個數(shù)的interplay,很多trival case需要考慮,比如:兩個負(fù)數(shù)相除,-2147483648/-1就必須轉(zhuǎn)換成long才能做;又比如:一個正數(shù)除以一個負(fù)數(shù),10/-3,則要把符號先考慮,然后轉(zhuǎn)換成絕對值再計算小數(shù)部分;還比如,一個小的正數(shù)除以一個大的負(fù)數(shù),7/-12,由于正數(shù)部分為0,所以還只有比較除數(shù)和被除數(shù)的絕對值大小才能得到符號。如果不仔細(xì),不考慮這些可能的特殊情況,調(diào)試就很痛苦!

class Solution {public: string fractionToDecimal(int numerator, int denominator) { //整數(shù)部分 //long long lnum=long(numerator),lden=long(denominator); long in=lnum/lden; string ipart=to_string(in);//bug:-2147483648/-1 if(lnum<0&&lden>0||lnum>0&&lden<0){ lnum=abs(lnum); lden=abs(lden); if(lnum<lden) ipart='-'+ipart; } lnum%=lden; string dpart; unordered_map<long,int> mm; int idx=0; while(lnum!=0&&!mm.count(lnum)){ mm[lnum]=idx++; lnum*=10; dpart+=to_string(lnum/lden); lnum%=lden; } if(lnum==0){ if(dpart.empty()) return ipart; return ipart+'.'+dpart; } int start=mm[lnum]; dpart=dpart.substr(0,start)+'('+dpart.substr(start,idx-start)+')'; return ipart+'.'+dpart; }};
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐亭县| 常山县| 武城县| 烟台市| 崇文区| 津市市| 兴仁县| 水城县| 曲阳县| 林甸县| 花垣县| 彰化县| 东丽区| 湘西| 内江市| 津市市| 大同市| 仁寿县| 蓬莱市| 白银市| 万宁市| 辽宁省| 嘉兴市| 天柱县| 宁陵县| 志丹县| 寿光市| 九寨沟县| 方正县| 井冈山市| 平度市| 洞头县| 南投县| 云梦县| 宜兴市| 佛学| 鹰潭市| 鄄城县| 筠连县| 长顺县| 个旧市|