給定兩個整數,分別表示分數的分子 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(numerator==0)
return "0";
StringBuilder str=new StringBuilder();
if(numerator<0^denominator<0)
str.append('-');
long dividend=Math.abs(Long.valueOf(numerator));
long divisor=Math.abs(Long.valueOf(denominator));
str.append(String.valueOf(dividend/divisor));
long remainter=dividend%divisor;
if(remainter==0)
return str.toString();
str.append('.');
Map<Long,Integer> map=new HashMap<>();
while(remainter!=0)
{
if(map.containsKey(remainter))
{
str.insert(map.get(remainter), "(");
str.append(")");
break;
}
map.put(remainter, str.length());
remainter*=10;
str.append(String.valueOf(remainter/divisor));
remainter%=divisor;
}
return str.toString();
}
}