如何判断两个分数相等

//这道题关键在于如何判断两个分数相等,这里采用除以gcd化为最简,然后构造成字符串。
class Solution {
public long interchangeableRectangles(int[][] rectangles) {
long res=0;
HashMap<String,Integer> map=new HashMap<>();
for(int i=0;i<rectangles.length;i++){
int first=rectangles[i][0];
int second=rectangles[i][1];
int gcd=gcd(first,second);
String s=String.valueOf(first/gcd)+'/'+String.valueOf(second/gcd);
int exits= map.getOrDefault(s,0);
res+=exits;
map.put(s,exits+1);
}
return res;
}
//辗转相除法。 a%b=c b%c=d c%d=e....
private static int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
}
我有一壶酒
足以慰风尘
尽倾江海里
赠饮天下人

浙公网安备 33010602011771号