[Math_Medium] 592. Fraction Addition and Subtraction
Posted qiulinzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Math_Medium] 592. Fraction Addition and Subtraction相关的知识,希望对你有一定的参考价值。
原题:592. Fraction Addition and Subtraction
题目大意:
给出一个分数字符串式子(分子分母都是1~10),求其和
解题思路:
利用stringstream
,它可以自动地实现字符串和数字之间的转换,比如 -1/2,可以输出为-1,/,2,把每个数取出来后就通分进行计算
代码:
class Solution{
public:
int gcd(int a,int b)
{
int c=0;
while(b)
{
c=a%b;
a=b;
b=c;
}
return a;
}
string fractionAddition(string expression) {
stringstream s(expression);
int a1=0,b1=0,a2=0,b2=0,temp=0,k=0;
char c;
s>>b1;//分子
s>>c;//符号
s>>a1;//分母
while(s>>b2)
{
s>>c;
s>>a2;
temp=gcd(a1,a2);
k=a1;
a1=a1*a2/temp;
b1=b1*(a1/k)+b2*(a1/a2);
temp=gcd(a1,abs(b1));//注意分母不会为负数,只有分子为负数,所以确保最大公约数为正数,需要取绝对值
a1/=temp;
b1/=temp;
}
return to_string(b1)+"/"+to_string(a1);
}
};
以上
以上是关于[Math_Medium] 592. Fraction Addition and Subtraction的主要内容,如果未能解决你的问题,请参考以下文章
[Math_Medium] 869. Reordered Power of 2
[Math_Medium] 279. Perfect Squares 2018-09-19
[Math_Medium]553. Optimal Division
[Math_Medium]343. Integer Break