📌  相关文章
📜  使用正则表达式验证罗马数字

📅  最后修改于: 2021-09-06 05:16:28             🧑  作者: Mango

给定一个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),通常会使用以下减法表示法

  • 放在VX之前表示少 1,所以 4 是IV (比 5 少一个),9 是 IX(比 10 少一个)。
  • 放在LC之前的X表示少 10,所以 40 是XL (10 小于 50),90 是XC (比一百少 10)。
  • 放在DM之前的C表示少一百,所以四百是CD (一百比五百少),九百是CM (一百比一千少)。

方法:

  • 检查字符串是否为有效罗马数字的正则表达式是这样的:
    ^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
    

    其中,

    1. M{0,4}指定千位部分,基本限制在 0 到 4000 之间
    2. (CM|CD|D?C{0,3})用于数百部分。
    3. (XC|XL|L?X{0,3})用于十位。
    4. 最后, (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