• Leetcode166. Fraction to Recurring Decimal分数到小数


    给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。

    如果小数部分为循环小数,则将循环的部分括在括号内。

    示例 1:

    输入: numerator = 1, denominator = 2 输出: "0.5"

    示例 2:

    输入: numerator = 2, denominator = 1 输出: "2"

    示例 3:

    输入: numerator = 2, denominator = 3 输出: "0.(6)"

    考验除法的原理。

    还有很多需要注意的点。

      class Solution {
      public:
    	  string fractionToDecimal(int numerator, int denominator) 
    	  {
    		  //特殊情况的判断。
    		  if (denominator == 0)
    			  return "NaN";
    		  if (numerator == 0)
    			  return "0";
    		  //为什么要在里面在加一层long long,因为如果是INT_MIN那么在转换成long long前,就直接爆了。
    		  //INT_MIN =  -2147483647 - 1 而INT_MAX = 2147483647;
    		  //该题如果不换成longlong,那么在临界值旁会出错。
    		  long long n = abs((long long)numerator);
    		  long long d = abs((long long)denominator);
    		  //
    		  bool flag = false;
    		  if (numerator > 0 && denominator > 0 || numerator < 0 && denominator < 0)
    		  {
    			  flag = true;
    		  }
    		  string intergetPart = to_string(n / d);
    		  n %= d;
    		  vector<long long> save;
    		  string decimalStr = "";
    		  while (n != 0)
    		  {
    			  n *= 10;
    			  int i = save.size() - 1;
    			  for (; i >= 0; i -- )
    			  {
    				  //除法的原理就是除不尽的,乘10再除,最后将结果再缩小10倍
    				  //如果之前的n有个和现在的n相同的数,那么就肯定是循环了。
    				  if (save[i] == n)
    					  break;
    			  }
    			  if (i >= 0)
    			  {
    				  decimalStr.insert(i, "(");
    				  decimalStr += ")";
    				  break;
    			  }
    			  save.push_back(n);
    			  decimalStr += to_string(n / d);
    			  n %= d;
    		  }
    		  //还需要注意答案为正还是负
    		  return (flag == false ? "-" : "") + intergetPart + (decimalStr == "" ? "" : ("." + decimalStr));
    	  }
      };
    
  • 相关阅读:
    、你对测试最大的兴趣在哪里?为什么?
    软件配置管理的作用?软件配置包括什么?
    什么是软件测试?软件测试的目的与原则
    生命周期阶段:
    白盒测试的优点有:
    黑盒测试的缺点有:
    什么是软件质量?
    软件配置管理的作用?软件配置包括什么?
    什么是测试用例 什么是测试脚本 两者的关系是什么?
    软件的安全性应从哪几个方面去测试?
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433758.html
Copyright © 2020-2023  润新知