給定乙個表示分數加減運算表示式的字串,你需要返回乙個字串形式的計算結果。 這個結果應該是不可約分的分數,即最簡分數。 如果最終結果是乙個整數,例如 2,你需要將它轉換成分數形式,其分母為 1。所以在上述例子中, 2 應該被轉換為 2/1。
示例 1:
輸入:"-1/2+1/2"
輸出: "0/1"
示例 2:
輸入:"-1/2+1/2+1/3"
輸出: "1/3"
示例 3:
輸入:"1/3-1/2"
輸出: "-1/6"
示例 4:
輸入:"5/3+1/3"
輸出: "2/1"
說明:
輸入和輸出字串只包含 『0』 到 『9』 的數字,以及 『/』, 『+』 和 『-』。
輸入和輸出分數格式均為±分子/分母。如果輸入的第乙個分數或者輸出的分數是正數,則 『+』 會被省略掉。
輸入只包含合法的最簡分數,每個分數的分子與分母的範圍是[1,10]。 如果分母是1,意味著這個分數實際上是乙個整數。
輸入的分數個數範圍是 [1,10]。
最終結果的分子與分母保證是 32位整數範圍內的有效整數。
模擬先找分母的最小公倍數,然後變換使兩個分數的分母相同,分子進行加減,然後再求分子分母的最大公約數,進行通分。詳細過程見**
int
mingbs
(int a,
int b)
intmaxgys
(int a,
int b)
return a;
} pair<
int,
int>
addfraction
(pair<
int,
int> one,pair<
int,
int> two)
int ys =
maxgys
(first,second)
;//求分子分母的最大公約數以便實現通分
return
make_pair
(isnegtive*first/ys,second/ys);}
string fractionaddition
(string expression)
if(isnegtive) first *=-
1;i++
;while
(i!='+'
&& expression[i]
!='-')if
(sp.
empty()
) sp.
push
(make_pair
(first,second));
else
i--;}
i++;}
return
to_string
(sp.
top(
).first)
+"/"
+to_string
(sp.
top(
).second)
;}
從零開始刷力扣(五十二) 592 分數加減運算
題目描述 給定乙個表示分數加減運算表示式的字串,你需要返回乙個字串形式的計算結果。這個結果應該是不可約分的分數,即最簡分數。如果最終結果是乙個整數,例如 2,你需要將它轉換成分數形式,其分母為 1。所以在上述例子中,2 應該被轉換為 2 1。說明 輸入和輸出字串只包含 0 到 9 的數字,以及 和 ...
111 分數加減法
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入 輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法 輸出對於輸入資料的每一行輸出兩...
111 分數加減法
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入 輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法 輸出對於輸入資料的每一行輸出兩...