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 関数: 2 つの数値の最大公約数を計算します。これは分数を簡略化するのに役立ちます。
-
addFractions 関数: 2 つの分数を加算します。共通の分母を計算し、それに応じて分子を調整して加算し、結果の分数を簡略化します。
-
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 中国語 Web サイトの他の関連記事を参照してください。