zoukankan      html  css  js  c++  java
  • 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));
    	  }
      };
    
  • 相关阅读:
    <转>性能测试浅谈
    Linux内存机制以及手动释放swap和内存
    Jmeter(十二)_打印时间戳
    Jmeter(二十一)_脚本参数化与内存溢出的解决方案
    Jmeter(五)_函数
    爬虫利器_you-get
    Jmeter(九)_获取JDBC响应做接口关联
    JMeter(十三)-代理服务器录制脚本
    JMeter(十)-正则表达式关联
    JMeter(十四)-自动生成测试报告
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433758.html
Copyright © 2011-2022 走看看