给定一个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之前表示少 1,所以 4 是IV (比 5 少一个),9 是 IX(比 10 少一个)。
- 放在L或C之前的X表示少 10,所以 40 是XL (10 小于 50),90 是XC (比一百少 10)。
- 放在D或M之前的C表示少一百,所以四百是CD (一百比五百少),九百是CM (一百比一千少)。
方法:
- 检查字符串是否为有效罗马数字的正则表达式是这样的:
^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})是单位部分。
- 导入正则表达式并在表达式中搜索输入的字符串如果字符串存在则返回真否则返回假
下面是上述方法的实现。
# 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
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live