🚀 作者 :“码上有前”
🚀 文章简介 :Python
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
文章目录
判断是否是罗马字母
def is_roman_numeral(s):
pattern = r'^(M{0,3})(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$'
return re.match(pattern, s) is not None
这段代码定义了一个函数 is_roman_numeral(s)
,用于判断给定的字符串 s
是否是罗马数字表示法。
该函数使用正则表达式来匹配罗马数字的模式。正则表达式模式被赋值给变量 pattern
,模式中包含了不同位数的罗马数字的组合规则。
下面是模式的解释:
^(M{0,3})
:以 0 到 3 个 ‘M’ 开头。(CM|CD|D?C{0,3})
:匹配 ‘CM’、‘CD’、或者以 0 到 3 个 ‘C’ 开头的字符串(表示百位数)。(XC|XL|L?X{0,3})
:匹配 ‘XC’、‘XL’、或者以 0 到 3 个 ‘X’ 开头的字符串(表示十位数)。(IX|IV|V?I{0,3})$
:匹配 ‘IX’、‘IV’、或者以 0 到 3 个 ‘I’ 结尾的字符串(表示个位数)。
这个模式可以匹配符合罗马数字规则的字符串。如果给定的字符串 s
符合模式,即是一个合法的罗马数字表示法,那么 re.match(pattern, s)
返回一个匹配对象。函数通过检查匹配对象是否为 None
来判断字符串是否是罗马数字。如果匹配对象不为 None
,表示有匹配,即字符串是一个罗马数字;如果匹配对象为 None
,则表示没有匹配,即字符串不是一个罗马数字。
因此,函数 is_roman_numeral(s)
返回 True
表示给定的字符串 s
是一个罗马数字,返回 False
表示不是罗马数字。
要使用这段代码,首先需要导入 Python 的 re
模块,因为代码中使用了正则表达式。可以在代码的开头添加 import re
。然后,调用 is_roman_numeral(s)
函数,将要判断的字符串作为参数传递给函数即可。
判断第一个字符串是纯正整数或者是大小写字母序列
def is_valid_string(s):
# 正则表达式,匹配严格的正整数或字母序列
pattern = r'^[1-9]\d*$|^[a-zA-Z]+$'
return re.match(pattern, s) is not None
这段代码定义了一个函数 is_valid_string(s)
,用于判断给定的字符串 s
是否是有效的字符串。
该函数使用正则表达式来匹配字符串的模式。正则表达式模式被赋值给变量 pattern
,模式中包含了两个部分:
^[1-9]\d*$
:匹配严格的正整数。这个模式要求字符串以 1 到 9 之间的数字开头,后面可以跟零个或多个数字。^[a-zA-Z]+$
:匹配字母序列。这个模式要求字符串只包含大小写字母,且至少包含一个字母。
这两个模式使用了 |
运算符,表示两个模式中的任意一个都可以匹配。
函数使用 re.match(pattern, s)
来进行匹配,并返回一个匹配对象。通过检查匹配对象是否为 None
,函数判断字符串是否符合模式。如果匹配对象不为 None
,表示有匹配,即字符串是一个有效的字符串;如果匹配对象为 None
,则表示没有匹配,即字符串不是一个有效的字符串。
因此,函数 is_valid_string(s)
返回 True
表示给定的字符串 s
是一个有效的字符串,返回 False
表示不是有效的字符串。
要使用这段代码,首先需要导入 Python 的 re
模块,因为代码中使用了正则表达式。可以在代码的开头添加 import re
。然后,调用 is_valid_string(s)
函数,将要判断的字符串作为参数传递给函数即可。
判断是否有重复的字符
# 判断是否有重复的字符
def has_duplicate_chars(roman_numeral):
seen_chars = set()
for char in roman_numeral:
if char in seen_chars:
return True
seen_chars.add(char)
return False
这段代码定义了一个函数 has_duplicate_chars(roman_numeral)
,用于判断给定的罗马数字字符串 roman_numeral
是否包含重复的字符。
函数的实现逻辑如下:
- 创建一个空的集合
seen_chars
,用于存储已经遍历过的字符。 - 对于罗马数字字符串
roman_numeral
中的每个字符char
,执行以下操作:- 检查字符
char
是否已经在集合seen_chars
中存在。如果存在,说明该字符已经出现过,即字符串中有重复的字符,因此返回True
。 - 如果字符
char
不在集合seen_chars
中,将其添加到集合seen_chars
中。
- 检查字符
- 如果遍历完整个字符串,没有发现重复的字符,则返回
False
,表示没有重复的字符。
这种实现利用了集合的特性,集合中的元素是唯一的,因此可以快速判断一个字符是否已经存在于集合中。
判断该字符是否在字符串中出现过2次及以上
def has_multiple_characters(char, string):
count = string.count(char)
if count >= 2:
return True
else:
return False
# 示例字符串
string1 = "hello"
string2 = "world"
string3 = "mississippi"
# 调用函数判断是否存在多个字符
result1 = has_multiple_characters('l', string1)
result2 = has_multiple_characters('o', string2)
result3 = has_multiple_characters('s', string3)
# 打印结果
print(result1) # 输出 True
print(result2) # 输出 False
print(result3) # 输出 True
- 使用字符串的
count
方法来计算字符串string
中字符char
的出现次数,将结果存储在变量count
中。 - 检查变量
count
的值是否大于等于 2。如果是,表示字符char
在字符串string
中出现了至少两次,函数返回True
表示存在多个字符char
。 - 如果变量
count
的值小于 2,表示字符char
在字符串string
中出现的次数不足两次,函数返回False
表示不存在多个字符char
。
判断字符在字符串中是否有相同字符出现,有返回所有下标
# 判断字符在字符串中是否有相同字符出现,有的话返回所有下标
def find_duplicate_indices(string):
string = string[::-1]
char_indices = {} # 创建一个空字典来存储每个字符的所有出现位置
for index, char in enumerate(string):
if char in char_indices:
char_indices[char].append(index) # 如果当前字符在字典中出现过,则将当前位置添加到列表中
else:
char_indices[char] = [index] # 否则,将当前字符记录到字典中并创建一个包含当前位置的列表
# 筛选出重复字符的位置下标
duplicate_indices = {char: indices for char, indices in char_indices.items() if len(indices) > 1}
return duplicate_indices if duplicate_indices else False # 如果没有重复字符,则返回 None
判断是否有重复3次及以上的字符
# 判断是否有重复3次及以上的字符
def has_duplicate(string):
char_count = {} # 创建一个空字典来存储每个字符的出现次数
for char in string:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
# 检查是否有字符出现三次及以上
for count in char_count.values():
if count >= 3:
return True # 存在重复三次及以上的字符
return False # 不存在重复三次及以上的字符
判断要给字符是否是字典某个键对应的值
# 判断要给字符是否是字典某个键对应的值
def is_value_of_key(char, dictionary):
values = dictionary.values()
if char in values:
return True
else:
return False