📅  最后修改于: 2023-12-03 15:12:16.080000             🧑  作者: Mango
给定一个字符串,将其中重复出现的字符去除,只保留其中不同的字符,返回处理后的新字符串。
def remove_duplicates(s: str) -> str:
pass
s
:待处理的字符串,长度不超过 $10^5$。assert remove_duplicates("hello") == "helo"
assert remove_duplicates("aaaaa") == "a"
assert remove_duplicates("abcabc") == "abc"
可以用集合来维护已经出现过的字符。遍历字符串的每个字符,如果发现该字符还没有出现过,则将其加入集合中,并将其添加到结果字符串中。
def remove_duplicates(s: str) -> str:
seen_chars = set()
result = ""
for c in s:
if c not in seen_chars:
seen_chars.add(c)
result += c
return result
时间复杂度:$O(n)$,其中 $n$ 为字符串的长度,需要遍历一次字符串中的每个字符。
空间复杂度:$O(n)$,集合中最多会存储 $n$ 个字符。