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

pythonserver side programmingprogramming

字符串是一种数据结构,它保存用双引号或单引号括起来的数据,即引号内的任何数据类型都被视为字符串。它是不可变的,一旦我们定义了数据,我们就不能更改或修改。在 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("所有字符串都是相互不相交的。")
else:
	print("字符串不是相互不相交的。")

输出

字符串不是相互不相交的。

使用 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("所有字符串都是相互不相交的。")
else:
    print("字符串不是相互不相交的。")

输出

字符串不是相互不相交的。

使用 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("所有字符串都是相互不相交的。")
else:
    print("字符串不是相互不相交的。")

输出

字符串不是相互不相交的。

相关文章