列表删除重复字符且顺序不变
时间: 2024-05-11 19:20:24 浏览: 69
可以使用 Python 中的列表和集合来实现删除重复字符且保持顺序不变的操作。具体方法如下:
```python
original_list = ['a', 'b', 'c', 'a', 'd', 'b']
unique_list = []
seen = set()
for char in original_list:
if char not in seen:
unique_list.append(char)
seen.add(char)
print(unique_list) # ['a', 'b', 'c', 'd']
```
首先,我们将原始列表中的元素逐个遍历,如果该元素不在集合 `seen` 中,说明该元素是第一次出现,我们将其加入到新的列表 `unique_list` 中,并将其加入到集合 `seen` 中。如果该元素已经在 `seen` 集合中,说明该元素已经出现过,我们跳过该元素,不做任何操作。
这样,我们就可以得到一个删除重复字符且保持顺序不变的列表。
相关问题
编写程序,删除输入的字符串中的重复字符,使得余下的字符串最小(按字符的字典排列比较规则),且余下的字符在原来字符串的相对位置保持不变。 说明:1)字符串中均为小写字母;2)字符串长度在9998以内。
可以使用以下算法来实现:1. 定义一个字符数组,将字符串中的字符按顺序存入数组中。2. 遍历字符数组,如果遇到当前字符与其前面的字符相同,则将该字符从数组中删除,直到数组中不存在重复字符。3. 将删除重复字符后的字符数组重新拼接成字符串,即为要求的最小字符串。
C语编写一个函数并调用,以一个整数数组和数组的长度作为参数。要求函数将数组中所有重复元素删除,只保留第一次出现的元素,并且保持原有的元素顺序不变,最后返回处理后数组的新长度
在C语言中,你可以通过遍历数组并使用一个临时数组存储非重复元素的方式来实现这个功能。这里是一个简单的示例,假设输入数组`arr`和其长度`n`:
```c
#include <stdio.h>
// 函数声明
size_t removeDuplicates(int arr[], size_t n);
int main() {
int arr[] = {1, 2, 3, 3, 4, 4, 5};
size_t initial_len = sizeof(arr) / sizeof(arr[0]); // 获取原始数组长度
// 调用函数并获取新长度
size_t new_len = removeDuplicates(arr, initial_len);
// 打印处理后的数组(注意这里只是打印长度,数组不会实际改变)
printf("New length after removing duplicates: %zu\n", new_len);
return 0;
}
// 函数实现:移除数组中的重复元素并返回新长度
size_t removeDuplicates(int arr[], size_t n) {
if (n == 0 || n == 1) // 如果数组为空或只有一个元素,直接返回
return n;
int *new_arr = malloc(n * sizeof(int)); // 分配空间存放新的数组
size_t new_len = 1; // 新数组开始位置,用于存储非重复元素
for (size_t i = 0; i < n; i++) {
if (i > 0 && arr[i] != arr[i - 1]) {
new_arr[new_len++] = arr[i]; // 只有当遇到不同元素才添加到新数组
}
}
new_arr[new_len] = '\0'; // 添加结束标记,因为数组实际上是字符串形式
// 返回新数组长度,而不是分配的空间大小,因为我们不再需要那么多内存
return new_len;
}
```
阅读全文
相关推荐












