挑戰:取 2 個字串 s1 和 s2,僅包括從 a 到 z 的字母。回傳一個新的排序字串,盡可能長,包含不同的字母——每個字母只取一次——來自 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))
它回傳所有字母,但我試圖過濾掉重復項。
這是我第一次堆疊溢位,所以請原諒我做錯了什么。我試圖弄清楚這一切。
如果有人可以提供幫助,我也不知道如何在代碼部分縮進。
uj5u.com熱心網友回復:
您在這里有兩個選擇。第一個是你想要的答案,第二個是另一種方法
要過濾掉重復項,您可以創建一個空白字串,然后遍歷回傳的字串。對于每個字符,如果該字符已經在字串中,則移動到下一個,否則添加它
out = ""
for i in returned_string:
if i not in out:
out = i
return out
這將被嵌入一個函式中
您擁有的第二個選項是使用 Python 集。對于您想要做的事情,您可以將它們視為其中沒有重復元素的串列。您可以將功能簡化為
def longest(a: str, b: str):
return "".join(set(a).union(set(b)))
這會從 中的所有字符組成一個集合a,然后再創建一個包含 中的所有字符的集合b。然后它將它們“連接”在一起(聯合),你會得到另一組。您可以將最后一組中的所有字符連接在一起以獲得您的字串。希望這可以幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474639.html
標籤:Python python-3.x 排序 按字母排序
上一篇:基數排序在輸出中顯示錯誤的值
