Python集 |两组成对的完整字符串
如果两个字符串连接在一起,则称它们是完整的,它们包含所有 26 个英文字母。例如,“abcdefghi”和“jklmnopqrstuvwxyz”是完整的,因为它们一起包含从“a”到“z”的所有字符。
我们分别给定了两组大小 n 和 m,我们需要找到将集合 1 中的每个字符串连接到集合 2 中的每个字符串时完成的对数。
例子:
Input : set1[] = {"abcdefgh", "geeksforgeeks",
"lmnopqrst", "abc"}
set2[] = {"ijklmnopqrstuvwxyz",
"abcdefghijklmnopqrstuvwxyz",
"defghijklmnopqrstuvwxyz"}
Output : 7
The total complete pairs that are forming are:
"abcdefghijklmnopqrstuvwxyz"
"abcdefghabcdefghijklmnopqrstuvwxyz"
"abcdefghdefghijklmnopqrstuvwxyz"
"geeksforgeeksabcdefghijklmnopqrstuvwxyz"
"lmnopqrstabcdefghijklmnopqrstuvwxyz"
"abcabcdefghijklmnopqrstuvwxyz"
"abcdefghijklmnopqrstuvwxyz"
我们有解决此问题的现有解决方案,请参阅 Pairs of complete 字符串 in two sets 字符串链接。我们可以在Python中使用 Set 数据结构快速解决这个问题。方法很简单,
- 考虑所有字符串对,将它们一一连接并将其转换为集合。
- 现在将连接字符串中的所有字母一一添加到集合中。由于 set 包含唯一值,因此如果 set 的长度等于 26,则意味着 set 包含所有 26 个英文字母。
# Function to find pairs of complete strings
# in two sets of strings
def completePair(set1,set2):
# consider all pairs of string from
# set1 and set2
count = 0
for str1 in set1:
for str2 in set2:
result = str1 + str2
# push all alphabets of concatenated
# string into temporary set
tmpSet = set([ch for ch in result if (ord(ch)>=ord('a') and ord(ch)<=ord('z'))])
if len(tmpSet)==26:
count = count + 1
print (count)
# Driver program
if __name__ == "__main__":
set1 = ['abcdefgh', 'geeksforgeeks','lmnopqrst', 'abc']
set2 = ['ijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwxyz','defghijklmnopqrstuvwxyz']
completePair(set1,set2)
输出:
7