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.
广告