Python程序检查所有字符串是否互不相交


字符串是其中一种数据结构,它保存用双引号或单引号括起来的数据,即任何包含在引号内的任何数据类型都被视为字符串。它是不可变的,一旦我们定义了数据,就不能更改或修改。在Python中,我们有一个名为str()的函数,它接受任何数据作为输入并返回字符串作为输出。

互不相交是指没有两个字符串具有相同的公共元素。检查所有字符串是否互不相交的方法有很多种。让我们逐一了解。

使用嵌套循环

嵌套循环是一种与循环相关的算法,它在主循环内创建另一个循环。

示例

在这个例子中,我们创建了一个嵌套循环来检查两个字符串中的每个元素,如果字符串互不相交,则返回True,否则返回False。以下是检查字符串是否互不相交的示例。

def are_disjoint(strings):
   for i in range(len(strings)):
      for j in range(i + 1, len(strings)):
         if set(strings[i]) & set(strings[j]):
            return False
   return True
my_strings = ["Welcome", "to tutorialspoint", "Happy", "Learning"]
if are_disjoint(my_strings):
   print("All strings are mutually disjoint.")
else:
   print("Strings are not mutually disjoint.")

输出

Strings are not mutually disjoint.

使用any()函数

在Python中,我们有一个名为any()的函数,如果可迭代对象中的任何元素为True,则返回True,否则返回False,即如果任何元素与另一个字符串中的元素相同,则返回True,否则返回False。

示例

在这个例子中,我们将字符串作为输入参数传递给any()函数,并检查是否有任何字符串相似,然后返回True或False。

def are_disjoint(strings):
   return not any(set(strings[i]) & set(strings[j]) for i in range(len(strings)) for j in range(i + 1, len(strings)))
my_strings = ["hello", "world", "python"]
if are_disjoint(my_strings):
   print("All strings are mutually disjoint.")
else:
   print("Strings are not mutually disjoint.")

输出

Strings are not mutually disjoint.

使用all()函数

Python中另一个可用的函数是all()函数,如果所有可迭代对象都为True,则返回True,否则返回False。

示例

在这个例子中,我们将遍历字符串,并检查每一对字符串之间是否存在任何公共字符。如果找到公共字符,则函数返回False,表示字符串不互不相交。如果没有找到公共字符,则函数返回True。

def are_disjoint(strings):
   return all(not set(strings[i]).intersection(*map(set, strings[:i] + strings[i+1:])) for i in range(len(strings)))
my_strings = ["hello", "world", "python"]
if are_disjoint(my_strings):
   print("All strings are mutually disjoint.")
else:
   print("Strings are not mutually disjoint.")

输出

Strings are not mutually disjoint.

更新于:2023年10月19日

91 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告