📅  最后修改于: 2023-12-03 15:10:49.221000             🧑  作者: Mango
在字符串处理中,经常需要删除重复的字符。如果要根据最后出现的顺序删除重复项,该如何实现呢?
以下是一个示例代码片段,演示了如何根据最后出现的顺序从字符串删除重复项。
def remove_duplicates(input_str):
"""
根据最后出现的顺序从字符串删除重复项
:param input_str: 需要处理的字符串
:return: 处理后的字符串
"""
char_dict = {}
result = ""
# 倒序遍历字符串
for i in range(len(input_str)-1, -1, -1):
c = input_str[i]
# 如果该字符已经存在于字典中,则跳过
if c in char_dict:
continue
else:
# 将字符加入字典,并将其拼接到最终结果中
char_dict[c] = 1
result = c + result
return result
在这段代码中,我们首先创建了一个空字典 char_dict
和一个空字符串 result
。然后,我们倒序遍历输入字符串中的每个字符,并将其保存到字典中。我们只将尚未存在于字典中的字符添加到最终结果字符串中。
由于我们是倒序遍历字符串,因此输出字符串中的每个字符都是按照最后出现的顺序排列的,且没有重复项。
这个算法的时间复杂度是 O(n)(n 表示输入字符串的长度),因为我们只遍历了输入字符串一次。