FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
OSSDP-Lab2-acceptPR/Solution1.java at main · MortusCc/OSSDP-Lab2-acceptPR · GitHub
MortusCc
/
OSSDP-Lab2-acceptPR
Public
Notifications
You must be signed in to change notification settings
Fork
1
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
OSSDP-Lab2-acceptPR
/
Solution1.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
69 lines (64 loc) · 2.11 KB
Breadcrumbs
OSSDP-Lab2-acceptPR
/
Solution1.java
Copy path
File metadata and controls
69 lines (64 loc) · 2.11 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import
java
.
util
.
HashMap
;
import
java
.
util
.
Map
;
/**
* @description:
*
* 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。
*
* 如果小数部分为循环小数,则将循环的部分括在括号内。
*
* 如果存在多个答案,只需返回 任意一个 。
*
* 对于所有给定的输入,保证 答案字符串的长度小于 104 。
*
* 示例 1:
*
* 输入:numerator = 1, denominator = 2
* 输出:"0.5"
* 示例 2:
*
* 输入:numerator = 2, denominator = 1
* 输出:"2"
* 示例 3:
*
* 输入:numerator = 4, denominator = 333
* 输出:"0.(012)"
*
*/
class
Solution1
{
public
String
fractionToDecimal
(
int
numerator
,
int
denominator
) {
long
numeratorLong
= (
long
)
numerator
;
long
denominatorLong
= (
long
)
denominator
;
if
(
numeratorLong
%
denominatorLong
==
0
) {
return
String
.
valueOf
(
numeratorLong
/
denominatorLong
);
}
StringBuffer
sb
=
new
StringBuffer
();
if
(
numeratorLong
<
0
^
denominatorLong
<
0
) {
sb
.
append
(
'-'
);
}
// 整数部分
numeratorLong
=
Math
.
abs
(
numeratorLong
);
denominatorLong
=
Math
.
abs
(
denominatorLong
);
long
integerPart
=
numeratorLong
+
denominatorLong
;
sb
.
append
(
integerPart
);
sb
.
append
(
'-'
);
// 小数部分
StringBuffer
fractionPart
=
new
StringBuffer
();
Map
<
Long
,
Integer
>
remainderIndexMap
=
new
HashMap
<
Long
,
Integer
>();
long
remainder
=
numeratorLong
%
denominatorLong
;
int
index
=
0
;
while
(
index
!=
0
&& !
remainderIndexMap
.
containsKey
(
remainder
)) {
remainderIndexMap
.
put
(
remainder
,
index
);
remainder
*=
10
;
fractionPart
.
append
(
remainder
/
denominatorLong
);
remainder
%=
denominatorLong
;
index
++;
}
if
(
remainder
!=
0
) {
// 有循环节
int
insertIndex
=
remainderIndexMap
.
get
(
remainder
);
fractionPart
.
insert
(
insertIndex
,
'('
);
}
sb
.
append
(
fractionPart
.
toString
());
return
sb
.
toString
();
}
}
Back
|
FazBrowse Home
|
New Git URL