LeetCode 166. Fraction to Recurring Decimal
来源:互联网 发布:游戏美工好找工作吗 编辑:程序博客网 时间:2024/06/05 14:30
LeetCode 166. Fraction to Recurring Decimal
问题来源LeetCode 166. Fraction to Recurring Decimal
问题描述
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,
Given numerator = 1, denominator = 2, return “0.5”.
Given numerator = 2, denominator = 1, return “2”.
Given numerator = 2, denominator = 3, return “0.(6)”.
问题分析
这道题就是求除法,但是需要考虑循环小数的问题。那么如何考虑呢?
对于循环小数来说。余数肯定出现重复。这句话该怎么理解呢。
1/7 = 0.14285714285714
从上面计算过程可以看出,余数1出现重复以后,后面的小数位都是重复的。所以保存余数,然后如果出现余数就说明开始了循环的过程。。考虑到对于给定denominator除数来说,可以初始化一个被除数数组。因为不能确定被除数最大是多少,这里我使用的是Map进行保存。
Java代码
public String fractionToDecimal(int numerator, int denominator) { if(numerator==0) return "0"; boolean isP = true; long number = numerator; long de = denominator; StringBuilder sb = new StringBuilder(); if(de*number<0) sb.append("-"); number=Math.abs(number); de = Math.abs(de); //首先计算整数部分 while(number>=de){ sb.append(number/de); number = number%de; } if(number==0){ return sb.toString(); } if(sb.length()<1||sb.charAt(sb.length()-1)=='-') sb.append("0"); //计算小数部分,小数部分要考虑小数的循环问题。小数的循环问题 Map<Long,Integer> map = new HashMap<>(); StringBuilder xiaosu = new StringBuilder(); int index = 0; while (number!=0){ if(map.containsKey(number)){ xiaosu.insert(map.get(number),"("); xiaosu.append(")"); break; } map.put(number,index); number*=10; xiaosu.append(number/de); number=number%de; index++; } return sb.append(".").append(xiaosu).toString();}
LeetCode学习笔记持续更新
GitHub地址 https://github.com/yanqinghe/leetcode
CSDN博客地址 http://blog.csdn.net/yanqinghe123/article/category/7176678
- 166. Fraction to Recurring Decimal Leetcode Python
- Leetcode-166.Fraction to Recurring Decimal
- [Leetcode]166. Fraction to Recurring Decimal @python
- [leetcode] 166. Fraction to Recurring Decimal
- leetcode 166. Fraction to Recurring Decimal
- [LeetCode]166. Fraction to Recurring Decimal
- LeetCode *** 166. Fraction to Recurring Decimal
- LeetCode 166. Fraction to Recurring Decimal
- [LeetCode]problem 166. Fraction to Recurring Decimal
- leetcode-java-166. Fraction to Recurring Decimal
- LeetCode 166. Fraction to Recurring Decimal
- [LeetCode] 166. Fraction to Recurring Decimal
- Leetcode-166. Fraction to Recurring Decimal
- leetcode 166. Fraction to Recurring Decimal
- Leetcode 166. Fraction to Recurring Decimal
- LeetCode 166. Fraction to Recurring Decimal
- Leetcode 166. Fraction to Recurring Decimal
- leetCode 166. Fraction to Recurring Decimal
- windows下双python环境下django初探
- 记有赞电话面试经历
- codeforce897C
- B
- 【bzoj 1002】 轮状病毒 [FJOI2007]
- LeetCode 166. Fraction to Recurring Decimal
- centos系统添加网卡
- (6)MyBatis小总结:一个简单的例子--接口编程改进
- 序列化的相关提问
- java中重载(overload)测试总结
- 02-idea破解码及相关初始化
- 时间复杂度和空间复杂度计算+尾递归
- cocos2dx之实现扑克牌翻转效果的三种方法
- extent management local