标签:
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,
Credits:
Special thanks to @Shangrila for adding this problem and creating all test cases.
Hash Table Math
#include <iostream> #include <unordered_map> #include <string> #include <sstream> using namespace std; class Solution { public: string fractionToDecimal(int numerator, int denominator) { bool flag1 = numerator<0; bool flag2 = denominator<0; unsigned numer = flag1?-numerator:numerator; unsigned denom = flag2?-denominator:denominator; if(denom==0) return ""; if(numer==0) return "0"; stringstream ss; ss<<numer/denom; string ret = ss.str(); unsigned long long int lft = numer%denom; unordered_map<unsigned int,unsigned int> mp; string ret1=""; unsigned int cnt = 1; while(lft){ if(mp[lft]==0){ mp[lft]=cnt++; ret1 += (lft*10)/denom + ‘0‘; lft = (lft*10)%denom; continue; } ret1 = ret1.substr(0,mp[lft]-1) + "(" + ret1.substr(mp[lft]-1) + ")"; break; } if(ret1 != "") ret += "." + ret1; if(flag1^flag2) ret = "-" + ret; return ret; } }; int main() { Solution sol; cout<<sol.fractionToDecimal(-1,-2147483648)<<endl; return 0; }
[LeetCode] Fraction to Recurring Decimal 哈希表
标签:
原文地址:http://www.cnblogs.com/Azhu/p/4382037.html