1. Description
Given a string representing an expression of fraction addition and subtraction, return the calculation result in string format.
2. Solution
先把String拆分成一个个的pair,表示分子和分母,分母是整数。
然后把分数两两相加。
得到最后的结果。
3. Code
string fractionAddition(string expression) {
if(expression[0]!='-')
expression="+"+expression;
expression+="+";
vector<pair<int,int> > nums;
char f = expression[0];
int n1=0,n2=0;
for(int i=1;i<expression.size();i++){
while(expression[i]!='/' && i<expression.size()){
n1=n1*10+(expression[i]-'0');
i++;
}
i++;
while(expression[i]!='+'&&expression[i]!='-'&& i<expression.size()){
n2=n2*10+(expression[i]-'0');
i++;
}
if(f=='-')
n1 = -n1;
nums.push_back(make_pair(n1,n2));
n1=0;
n2=0;
f=expression[i];
}
n1 = nums[0].first,n2 = nums[0].second;
for(int i=1;i<nums.size();i++){
int a1 = nums[i].first,a2 = nums[i].second;
int b1 = n1 * a2 + a1 * n2;
int b2 = a2 * n2;
int gc=1;
if(b1>0)
gc= getans(b1,b2);
else if(b1<0)
gc= getans(-b1,b2);
n1 = b1/gc;
n2 = b2/gc;
}
if(n1==0)
n2 = 1;
return to_string(n1)+"/"+to_string(n2);
}
int getans(int a,int b){
while(b){
int c = a%b;
a=b;
b=c;
}
return a;
}