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 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是。分數加法和減法的詳細內容。更多資訊請關注PHP中文網其他相關文章!