码迷,mamicode.com
首页 > 其他好文 > 详细

[Math_Medium] 592. Fraction Addition and Subtraction

时间:2018-08-21 21:49:00      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:ems   字符   add   code   temp   while   正数   abs   problem   

原题: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

标签:ems   字符   add   code   temp   while   正数   abs   problem   

原文地址:https://www.cnblogs.com/qiulinzhang/p/9514346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!