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。分數加法和減法
<?php // Example usage echo fractionAddition("-1/2+1/2"); // Output: "0/1" echo "\n"; echo fractionAddition("-1/2+1/2+1/3"); // Output: "1/3" echo "\n"; echo fractionAddition("1/3-1/2"); // Output: "-1/6" ?>
登錄后復制
解釋:
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 上給
存儲庫 一顆星,或在您最喜歡的社交網絡上分享該帖子?。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
領英
github