您的位置:首页 > 其它

166. Fraction to Recurring Decimal

2018-01-14 17:06 459 查看

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)”.

题目大意:分数计算,除不尽的部分用()表示

代码

package HashTable;

import sun.rmi.runtime.Log;

import java.util.HashMap;
import java.util.Map;

/**
* @author OovEver
* 2018/1/14 16:48
*/
public class LeetCode166 {
public String fractionToDecimal(int numerator, int denominator) {
if (numerator == 0) {
return "0";
}
StringBuilder res = new StringBuilder();
res.append((numerator > 0) ^ (denominator > 0) ? "-" : "");
long num = Math.abs((long) numerator);
long den = Math.abs((long) denominator);
res.append(num / den);
num %= den;
if (num == 0) {
return res.toString();
}
Map<Long, Integer> map = new HashMap<>();
res.append(".");
map.put(num, res.length());
while (num != 0) {
num *= 10;
res.append(num / den);
num %= den;
if (map.containsKey(num)) {
int index = map.get(num);
res.insert(index, "(");
res.append(")");
break;
} else {
map.put(num, res.length());
}

}
return res.toString();

}
}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: