📜  门| GATE-CS-2009 |第 59 题(1)

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

GATE-CS-2009 Question 59

该题要求实现一个函数,将字符串中的连续重复字符压缩成单个字符并输出。例如,"aaabbbcc"应该被压缩为"abc"。该函数应该使用迭代方式实现。

以下是可行的实现:

def compress(input_string: str) -> str:
    compressed_string = ""
    current_char = ""
    count = 0
    for i in range(len(input_string)):
        if input_string[i] != current_char:
            if count > 0:
                compressed_string += current_char
                count = 0
            current_char = input_string[i]
        count += 1
    if count > 0:
        compressed_string += current_char
    return compressed_string

该实现采用了简单的迭代方法,逐个字符检查输入字符串中的字符。如果字符是新的,我们将存储到压缩字符串中的前一个字符的计数器归零并开始计数新计数器。如果字符与前一个字符相同,则递增计数器。

对于输入字符串的最后一个字符我们需要特别处理,因为它的计数器还没有被处理。最后,我们将最后一个压缩字符添加到压缩字符串中并返回它。

这种实现的时间复杂度是O(n),其中n是输入字符串的长度。