Compare two fractions
JavaView on GFG
Time: O(1)
Space: O(1)
Advertisement
Intuition
Compare two fractions a/b and c/d without floating point. Cross multiply: a*d vs c*b.
Algorithm
- 1If a*d > b*c: first fraction is larger. If equal: fractions are equal. Else second is larger.
Common Pitfalls
- •Use long multiplication to avoid overflow. Do not divide to decimal — loss of precision.
Compare two fractions.java
Java
// Approach: Cross-multiply to compare a/b vs c/d: compare a*d with c*b.
// Time: O(1) Space: O(1)
class Solution {
String compareFrac(String str) {
String[] fractions = str.split(",");
String[] fraction1 = fractions[0].split("/");
double a = Double.parseDouble(fraction1[0]);
double b = Double.parseDouble(fraction1[1]);
String[] fraction2 = fractions[1].split("/");
double c = Double.parseDouble(fraction2[0]);
double d = Double.parseDouble(fraction2[1]);
double res1 = (a / b);
double res2 = (c / d);
if (res1 == res2)
return "equal";
else if (res1 > res2)
return fraction1[0] + "/" + fraction1[1];
else
return fraction2[0] + "/" + fraction2[1];
}
}
Advertisement
Was this solution helpful?