📌  相关文章
📜  转换给定的字符串,使其仅包含不同的字符(1)

📅  最后修改于: 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$ 个字符。