尝试按字母顺序对两个组合字符串进行排序而不重复

Trying to sort two combined strings alphabetically without duplicates

挑战:取 2 个字符串 s1 和 s2,仅包含从 a 到 z 的字母。 Return 一个新的排序字符串,尽可能长,包含不同的字母 - 每个字母只取一次 - 来自 s1 或 s2。

# Examples
a = "xyaabbbccccdefww"
b = "xxxxyyyyabklmopq"
assert longest(a, b) == "abcdefklmopqwxy"
a = "abcdefghijklmnopqrstuvwxyz"
assert longest(a, a) == "abcdefghijklmnopqrstuvwxyz"

所以我才刚刚开始学习,但到目前为止我有这个:

def longest(a1, a2):
    for letter in max(a1, a2):
        return ''.join(sorted(a1+a2))

其中 returns 所有字母,但我正在尝试过滤掉重复项。

这是我第一次出现堆栈溢出,所以请原谅我做错了什么。我正在努力弄清楚这一切。

我也不知道如何在代码部分缩进,如果有人能帮忙的话。

这里有两种选择。第一个是你想要的答案,第二个是替代方法


要过滤掉重复项,您可以制作一个空白字符串,然后遍历返回的字符串。对于每个字符,如果该字符已经在字符串中,则移至下一个,否则添加它

out = ""
for i in returned_string:
    if i not in out:
        out += i
return out

This would be empedded inside a function

您的第二个选择是使用 Python 集。对于您想做的事情,您可以将它们视为其中没有重复元素的列表。您可以将函数简化为

def longest(a: str, b: str):
    return "".join(set(a).union(set(b)))

这从 a 中的所有字符组成一个集合,然后是 b 中所有字符的另一个集合。然后它将它们“连接”在一起(并集),您会得到另一组。您可以在最后一组中将所有字符连接在一起以获得您的字符串。希望这有帮助