Skip to content

Commit a3c3e68

Browse files
refactor 592
1 parent 0c8eefc commit a3c3e68

File tree

2 files changed

+48
-43
lines changed

2 files changed

+48
-43
lines changed

src/main/java/com/fishercoder/solutions/_592.java

Lines changed: 46 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -41,56 +41,61 @@ Each fraction (input and output) has format ±numerator/denominator.
4141
*/
4242
public class _592 {
4343

44-
/**Credit: https://discuss.leetcode.com/topic/89993/java-solution-fraction-addition-and-gcd*/
45-
public String fractionAddition(String expression) {
46-
List<String> nums = new ArrayList<>();
47-
int i = 0;
48-
int j = 0;
49-
while (j <= expression.length()) {
50-
if (j == expression.length() || j != i && (expression.charAt(j) == '-' || expression.charAt(j) == '+')) {
51-
if (expression.charAt(i) == '+') {
52-
nums.add(expression.substring(i + 1, j));
53-
} else {
54-
nums.add(expression.substring(i, j));
44+
public static class Solution1 {
45+
46+
/**
47+
* Credit: https://discuss.leetcode.com/topic/89993/java-solution-fraction-addition-and-gcd
48+
*/
49+
public String fractionAddition(String expression) {
50+
List<String> nums = new ArrayList<>();
51+
int i = 0;
52+
int j = 0;
53+
while (j <= expression.length()) {
54+
if (j == expression.length() || j != i && (expression.charAt(j) == '-' || expression.charAt(j) == '+')) {
55+
if (expression.charAt(i) == '+') {
56+
nums.add(expression.substring(i + 1, j));
57+
} else {
58+
nums.add(expression.substring(i, j));
59+
}
60+
i = j;
5561
}
56-
i = j;
62+
j++;
5763
}
58-
j++;
59-
}
6064

61-
String result = "0/1";
62-
for (String frac : nums) {
63-
result = add(result, frac);
65+
String result = "0/1";
66+
for (String frac : nums) {
67+
result = add(result, frac);
68+
}
69+
return result;
6470
}
65-
return result;
66-
}
6771

68-
private String add(String result, String frac) {
69-
String[] frac1 = frac.split("/");
70-
String[] frac2 = result.split("/");
71-
int n1 = Integer.parseInt(frac1[0]);
72-
int d1 = Integer.parseInt(frac1[1]);
73-
int n2 = Integer.parseInt(frac2[0]);
74-
int d2 = Integer.parseInt(frac2[1]);
75-
int numerator = n1 * d2 + n2 * d1;
76-
int denominator = d1 * d2;
77-
if (numerator == 0) {
78-
return "0/1";
79-
}
72+
private String add(String result, String frac) {
73+
String[] frac1 = frac.split("/");
74+
String[] frac2 = result.split("/");
75+
int n1 = Integer.parseInt(frac1[0]);
76+
int d1 = Integer.parseInt(frac1[1]);
77+
int n2 = Integer.parseInt(frac2[0]);
78+
int d2 = Integer.parseInt(frac2[1]);
79+
int numerator = n1 * d2 + n2 * d1;
80+
int denominator = d1 * d2;
81+
if (numerator == 0) {
82+
return "0/1";
83+
}
8084

81-
boolean negative = numerator * denominator < 0;
82-
numerator = Math.abs(numerator);
83-
denominator = Math.abs(denominator);
84-
int gcd = getGCD(numerator, denominator);
85+
boolean negative = numerator * denominator < 0;
86+
numerator = Math.abs(numerator);
87+
denominator = Math.abs(denominator);
88+
int gcd = getGCD(numerator, denominator);
8589

86-
return (negative ? "-" : "") + (numerator / gcd) + "/" + (denominator / gcd);
87-
}
90+
return (negative ? "-" : "") + (numerator / gcd) + "/" + (denominator / gcd);
91+
}
8892

89-
private int getGCD(int a, int b) {
90-
if (a == 0 || b == 0) {
91-
return a + b;
93+
private int getGCD(int a, int b) {
94+
if (a == 0 || b == 0) {
95+
return a + b;
96+
}
97+
return getGCD(b, a % b);
9298
}
93-
return getGCD(b, a % b);
9499
}
95100

96101
}

src/test/java/com/fishercoder/_592Test.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
* Created by fishercoder on 5/23/17.
1111
*/
1212
public class _592Test {
13-
private static _592 test;
13+
private static _592.Solution1 test;
1414
private static String expression;
1515

1616
@BeforeClass
1717
public static void setup() {
18-
test = new _592();
18+
test = new _592.Solution1();
1919
}
2020

2121
@Test

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy