文章目录

  • 题目
  • 题解

题目

题链:166. 分数到小数

题解

使用小学数学的长除法模拟解决,分三步走:

  1. 判断是否可以直接整除,可以整除直接相除返回结果即可
  2. 判断符号是否一正一负,是的话转为正数进行相除、并且结果记得添上负号。
  3. 小数方面的处理、使用一个hashmap判断是否存在循环小数、存在则加上括号、使用stringbulider的insert在出现重复余数的下标插入。没有最后会直接得到小数结果。
    需要注意的是在求余那一块可能会出现整形溢出的情况、所以改成long进行运算。
class Solution {public String fractionToDecimal(int numerator, int denominator) {long a = numerator,b = denominator;if (a%b == 0){return String.valueOf(a/b);}StringBuilder sb = new StringBuilder();if (a*b < 0){sb.append('-');}a = Math.abs(a);b = Math.abs(b);sb.append(a/b);sb.append('.');long rem = a%b;StringBuilder di = new StringBuilder();HashMap<Long,Integer> map = new HashMap<>();int i = 0;while (rem != 0 && !map.containsKey(rem)){map.put(rem,i++);rem *= 10;di.append(rem/b);rem = rem%b;}if (rem != 0){di.insert(map.get(rem),"(");di.append(')');}return sb.append(di.toString()).toString();}
}

(每日一题 day 002 - 模拟) 166. 分数到小数相关推荐

  1. 166. 分数到小数

    166. 分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 . 如果小数部分为循环小数,则将循环的部分括在括号内. 如果存在多个 ...

  2. linux命令dd创建虚拟硬盘,每日一题.PYTHON如何模拟LINUX的dd命令快速创建大文件?...

    原文数据: 无 具体要求: 1. 模拟Linux的dd命令快速创建大文件 代码实现: # -*- coding: utf-8 -*- """ # # Authors: l ...

  3. 每日一题---比赛安排---模拟

    题目:比赛安排 思路: 直接模拟选择情况,每天一个队只能参加一场比赛,用变量记录,隔天还原变量:  从小的队开始比,循环开始,满足条件的打比赛: 代码如下: #include<bits/stdc ...

  4. int 小数_[LeetCode] 166. 分数到小数

    题目描述 : https://leetcode-cn.com/problems/fraction-to-recurring-decimal/ 题目描述: 给定两个整数,分别表示分数的分子 numera ...

  5. leetcode 166分数到小数

    手动排除特殊情况: 对于一般情况,使用位运算和加减法来计算除法,使用sign记录结果符号:(这部分为leetcode 29题的答案) 使用hashmap来记录循环体出现的开始位置(如果有的话),使用f ...

  6. LeetCode 166. 分数到小数(小数除法)

    1. 题目 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数,则将循环的部分括在括号内. 示例 1: 输入: num ...

  7. Leetcode 166. 分数到小数 解题思路及C++实现

    解题思路: 这道题目的核心是怎么找到循环部分:当出现重复的余数时,就会出现循环. 前面需要考虑比较多种情况:除数是否为0:结果的正负:结果的整数部分和小数部分分开求解. 在求解小数部分的时候,需要用到 ...

  8. LeetCode 166. 分数到小数

    思路: 循环体出现的依据是,产生重复的余数,即每次mod*10 后再和 除数b计算出新余数,和之前的比较即可. 先对int型数据进行转换为long 以免int负数最小值化正越界 判定正负数, 结果是否 ...

  9. LeetCode 每日一题 2021/9/27-2021/10/3

    记录了初步解题思路 以及本地实现代码:并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/27 639. 解码方法 II 9/28 437. 路径总和 III 9/29 517. 超级洗衣机 9 ...

  10. PMP模拟试题每日5题(5月7日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.产品开发团队采用敏捷开发 ...

最新文章

  1. iOS动画系列之九:实现点赞的动画及播放起伏指示器
  2. 十大编程算法助程序员走上大神路
  3. JSF----事件处理---动作事件
  4. 使用 frida+dexdump对apk脱壳
  5. Ztree-JQuery树插件的学习(未完)
  6. MIT正式发布编程语言Julia 1.0:Python、R、C++三合一
  7. css 动画使用_如何在CSS中使用动画
  8. python标准库(一)
  9. git-工作区与暂存区
  10. Kali渗透测试工具库(二)beef--Web浏览器攻击框架
  11. CMake语法及CMakeList.txt简单使用
  12. 机器学习课程笔记【十三】- 独立成分分析
  13. LINUX SHELL获得CPU核心(线程)个数
  14. Qt开发经验小技巧176-180
  15. 学习软件技术的五大技巧
  16. 电脑上的记事本便签纸怎么用
  17. xp 开机画面【欢迎使用】四个字更改方法
  18. 软件项目管理——文档
  19. 每日任务:1276. 不浪费原料的汉堡制作方案
  20. 深度学习入门书籍和资源

热门文章

  1. mysql用户创建、授权
  2. Axis1.x WebService开发指南—目录索引
  3. 40. 减少 HTTP 请求 (1)
  4. 3.Chrome开发者工具不完全指南(二、进阶篇)
  5. 20.Adding Javascript and CSS via Layout XML
  6. sql中exists与in的区别
  7. 用jquery替换dojo中的ajax
  8. CentOS 通过yum来升级php到php5.6
  9. MySQL 主从同步
  10. oracle 大批量数据更新