📜  门| GATE-CS-2003 |第 90 题(1)

📅  最后修改于: 2023-12-03 15:12:40.220000             🧑  作者: Mango

题目概述

该题目是 Gate-CS-2003 的第 90 题。题目描述如下:

给定一个字符串 S,编写一个算法来移除字符串中重复的字符,并且保持原始字符串中的顺序。

例如,如果输入字符串为: geeksforgeeks,则输出为 geksfor

解题思路

这个问题可以使用哈希表进行解决,我们可以创建一个哈希表,用于存储每个字符的出现次数。我们可以遍历输入字符串并将其中的字符添加到哈希表中。一旦我们遇到一个重复的字符,我们可以从字符串中将其删除,然后继续遍历。

以下是具体的步骤:

  1. 创建一个空的哈希表,用于存储每个字符的出现次数。
  2. 创建一个新的空字符串,用于存储不包含重复字符的结果。
  3. 遍历输入字符串中的每个字符。
  4. 对于每个字符,检查哈希表中是否已经存在该字符。 a. 如果存在,表示该字符是重复的,不需要将其添加到结果字符串中。 b. 如果不存在,将该字符添加到结果字符串中,并将其添加到哈希表中。
  5. 返回结果字符串。

代码实现

以下是 Python 代码实现:

def remove_duplicates(s: str) -> str:
    char_count = {}
    result = ''
    for c in s:
        if c not in char_count:
            result += c
            char_count[c] = 1
    return result

测试样例

下面是一些测试样例:

样例 1

输入: geeksforgeeks

输出: geksfor

样例 2

输入: hello

输出: helo

样例 3

输入: aaaaa

输出: a