Leetcode 592 分數加減運算 C

2021-10-08 07:58:10 字數 1693 閱讀 3560

給定乙個表示分數加減運算表示式的字串,你需要返回乙個字串形式的計算結果。 這個結果應該是不可約分的分數,即最簡分數。 如果最終結果是乙個整數,例如 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結束 輸入資料保證合法 輸出對於輸入資料的每一行輸出兩...