Skip to content

Commit 211a6a0

Browse files
committed
Add solution 166.
1 parent 94ebf3a commit 211a6a0

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
class Solution {
2+
3+
/**
4+
* @param Integer $numerator
5+
* @param Integer $denominator
6+
* @return String
7+
*/
8+
function fractionToDecimal($num1, $deno1) {
9+
$neg = $num1 > 0 && $deno1 < 0 || $num1 < 0 && $deno1 > 0;
10+
$ret = $neg ? "-":"";
11+
$num = abs($num1);
12+
$deno = abs($deno1);
13+
14+
15+
$p1 = intval($num/$deno);
16+
$remain = $num%$deno;
17+
if($remain == 0) return $ret . $p1;
18+
19+
$map = [];
20+
$sb = "";
21+
22+
$start = -1;
23+
$end = -1;
24+
$map[$remain] = 0;
25+
echo($sb);
26+
while($remain != 0) {
27+
$remain *= 10;
28+
while($remain < $deno) {
29+
$sb .= '0';
30+
$map[$remain] = strlen($sb);
31+
$remain *= 10;
32+
}
33+
34+
$res = intval($remain/$deno);
35+
$sb = $sb . chr($res + ord('0'));
36+
37+
$remain %= $deno;
38+
if($remain == 0) break;
39+
40+
$len = strlen($sb);
41+
if(array_key_exists($remain, $map)) {
42+
$start = $map[$remain];
43+
break;
44+
} else {
45+
$map[$remain] = $len;
46+
}
47+
}
48+
49+
$ret = $ret . $p1 . ".";
50+
if($start == -1) {
51+
$ret .= $sb;
52+
} else {
53+
$ret = $ret . substr($sb, 0, $start) . "(" . substr($sb, $start) . ")";
54+
}
55+
56+
return $ret;
57+
}
58+
}

0 commit comments

Comments
 (0)