公司网站建设维护的岗位,网站建设步骤的论文,wordpress 微信注册地址,最简单的网站建设语音给定两个整数#xff0c;分别表示分数的分子 numerator 和分母 denominator#xff0c;以 字符串形式返回小数 。
如果小数部分为循环小数#xff0c;则将循环的部分括在括号内。
如果存在多个答案#xff0c;只需返回 任意一个 。
对于所有给定的输入#xff0c;保证 …给定两个整数分别表示分数的分子 numerator 和分母 denominator以 字符串形式返回小数 。
如果小数部分为循环小数则将循环的部分括在括号内。
如果存在多个答案只需返回 任意一个 。
对于所有给定的输入保证 答案字符串的长度小于 104 。 示例 1
输入numerator 1, denominator 2
输出0.5示例 2
输入numerator 2, denominator 1
输出2示例 3
输入numerator 4, denominator 333
输出0.(012)
思路一模拟竖式计算
c解法
class Solution {
public:string fractionToDecimal(int numerator, int denominator) {long n numerator, d denominator;if(n % d 0) return to_string(n / d);string ans;if(n * d 0) ans -;n abs(n); d abs(d);ans to_string(n / d) .;n % d;int len ans.size();unordered_mapint, int up;while(n !up.count(n)){up[n] len;n * 10;ans to_string(n / d);n % d;}if(n ! 0){int pos up[n];ans ans.substr(0, pos) ( ans.substr(pos) );}return ans;}
};
分析
本题要求分数转换为小数在编写的过程中要考虑到多个情况如出现负数循环小数等可以直接模拟人工计算的方式利用竖式计算来解决利用哈希表来记录余数是否有重复的情况提取重复余数再将原数转换为字符串输出即可解决时间复杂度O(n)空间复杂度O(n)
总结
本题考察对除运算的理解利用竖式计算来计算小数哈希表来记录重复小数将重复余数用括号括起来拼接后输出即可解决