PHP でローマ数字を整数に変換する高速アルゴリズムと実装方法をマスターする
日々の開発では、ローマ数字を整数に変換する必要に遭遇することがよくあります。たとえば、「IV」で表されるローマ数字を整数の 4 に変換します。 PHP は基本的な変換関数 roman_numerals()
を提供しますが、特に大量のデータを処理する場合、そのパフォーマンスは高くありません。この記事では、高速アルゴリズムとそれに対応する PHP 実装を紹介します。
まず、ローマ数字と整数の対応を見てみましょう。
ローマ数字 | は整数に対応します |
---|---|
I | 1 |
IV | 4 |
V | 5 |
IX | 9 |
XX | 10 |
XL | 40 |
L | 50 |
XC | 90 |
C | 100 |
CD | 400 |
500 | |
900 | |
#1000 |
function romanToInt($s) { $num = 0; $len = strlen($s); for ($i = 0; $i < $len; $i++) { // 获取当前字符的整数值 $curNum = getValue($s[$i]); // 如果当前字符比下一个字符小,则进行减法操作 if ($i < $len - 1 && $curNum < getValue($s[$i + 1])) { $num -= $curNum; } else { // 否则进行加法操作 $num += $curNum; } } return $num; } // 获取字符对应的整数值 function getValue($ch) { switch ($ch) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } // 测试代码 echo romanToInt('IV'); // 输出 4上記のコードでは、ローマ数字から整数への変換演算を実装する
romanToInt() 関数を定義します。ローマ数字文字列を走査するとき、
getValue() 関数を通じて現在の文字の整数値を取得し、その値を次の文字の値と比較して、加算または減算を実行するかどうかを決定します。
以上がPHP でローマ数字を整数に変換する高速アルゴリズムと実装方法をマスターします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。