给定一个String ,并且您必须验证给定的String是否为有效的罗马数字。如果有效,则打印True,否则打印False。
注意:数字介于1到3999之间。
例子:
Input: String = IX
Output: True
Input: String = 54IVC
Output: False
罗马数字基于以下符号。
SYMBOL VALUE
I 1
IV 4
V 5
IX 9
X 10
XL 40
L 50
XC 90
C 100
CD 400
D 500
CM 900
M 1000
罗马数字中的数字是这些符号的字符串,按降序排列(例如,M的第一个,然后是D的等等)。但是,在某些特定情况下,为避免连续重复四个字符(例如IIII或XXXX),减法表示法通常如下使用:
- 我在V或X之前表示少一,所以四个是IV (小于5的一个),而9是IX(小于10的一个)。
- L或C前面的X表示少十,因此XL为四十(小于50十), XC为90(十小于一百)。
- 在D或M前面的C表示少100,因此CD等于400(小于500),而CM等于900(小于1000)。
方法:
- 检查字符串是否为有效罗马数字的正则表达式是这样的:
^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
其中,
- M {0,4}指定了数千个部分,并且基本上将其限制在0到4000之间
- (CM | CD | D?C {0,3})用于数百个部分。
- (XC | XL | L?X {0,3})用于十位。
- 最后, (IX | IV | V?I {0,3})是单位部分。
- 导入正则表达式并在表达式中搜索输入字符串(如果字符串存在)返回True,否则返回False
下面是上述方法的实现。
# Python3 program to Validate the Roman numeral
# Function to Validate the Roman numeral
def ValidationOfRomanNumerals(string):
# Importing regular expression
import re
# Serching the input string in expression and
# returning the boolean value
print(bool(re.search(r"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$",string)))
# Driver code
# Given string
string="XI"
# Function call
ValidationOfRomanNumerals(string)
输出:
True