592。分數加法和減法
難度:中等
主題:數學、字串、模擬
給定一個表示分數加減表達式的字串表達式,以字串格式傳回計算結果。
最終結果應該是一個不可約分數。如果您的最終結果是整數,請將其變更為分母為 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”
限制:
- 輸入字串僅包含'0'到'9'、'/'、'+'和'-'。輸出也是如此。
- 每個分數(輸入和輸出)的格式為±分子/分母。如果第一個輸入分數或輸出為正,則將省略 '+'。
- 輸入僅包含有效的不可約分數,其中每個分數的分子和分母將始終在[1, 10]範圍內。如果分母為 1,則表示該分數實際上是上面定義的分數格式的整數。
- 給定分數的數量將在 [1, 10] 範圍內。
- 最終結果的分子和分母保證有效並且在32位int範圍內。
解決方案:
我們需要仔細解析輸入字串並對分數進行算術運算。步驟如下:
- 解析輸入表達式:從表達式字串中提取各個分數。
- 計算結果:逐步加法或減去分數。
- 簡化結果:將最終分數轉換為其不可約形式。
讓我們用 PHP 實作這個解決方案:
592。分數加法和減法
雷雷
解釋:
- gcd 函數:計算兩個數字的最大公約數,這有助於簡化分數。
- addFractions 函數:兩個分數相加。它計算公分母,相應地調整分子,將它們相加,然後簡化所得分數。
- fractionAddition 函數:這是解析輸入表達式的主函數,使用正規表示式提取所有分數,並使用 addFractions 函數迭代地將它們相加。
測試用例:
fractionAddition("-1/2+1/2") 傳回 "0/1".
fractionAddition("-1/2+1/2+1/3") 回傳 "1/3".
fractionAddition("1/3-1/2") 回傳 "-1/6".
此解決方案處理所有必要的操作,並為每個給定表達式傳回正確的輸出。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給
存儲庫一顆星,或者在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是。分數加法和減法的詳細內容。更多資訊請關注PHP中文網其他相關文章!