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. 分数加减运算
最新推荐文章于 2024-08-17 15:37:21 发布