class Solution {
public String fractionAddition(String expression) {
long denominator = 0, numerator = 1;
int index = 0, n = expression.length();
while (n > index){
long denominator1 = 0, sign = 1;
while (expression.charAt(index) == '+' || expression.charAt(index) == '-'){
sign = expression.charAt(index) == '+' ? 1 : -1;
index++;
}
while (index < n && Character.isDigit(expression.charAt(index))){
denominator1 = denominator1 * 10 + expression.charAt(index ) - '0';
index++;
}
denominator1 *= sign;
index++;
long numerator1 = 0;
while (index < n && Character.isDigit(expression.charAt(index))){
numerator1 = numerator1 * 10 + expression.charAt(index) - '0';
index++;
}
denominator = denominator * numerator1 + denominator1 * numerator;
numerator *= numerator1;
}
if (denominator == 0){
return "0/1";
}
long g = god (Math.abs(denominator), numerator);
return Long.toString(denominator / g) + "/" + Long.toString(numerator / g);
}
/**
最大公约数
*/
private long god(long a, long b){
long remainder = a % b;
while (remainder != 0){
a = b;
b = remainder;
remainder = a % b;
}
return b;
}
}
力扣:592. 分数加减运算
最新推荐文章于 2025-12-04 23:36:16 发布
本文介绍了一个名为Solution的类中的fractionAddition方法,用于处理字符串形式的分数加法,通过遍历和计算操作符、分子和分母,最终返回化简后的分数。关键部分包括处理加减号和数字转换,以及利用最大公约数求最简分数。

2597

被折叠的 条评论
为什么被折叠?



