7-16 删除重复字符
时间: 2023-10-31 14:26:34 浏览: 64
如果字符串中有重复的字符,只保留第一个出现的字符,删除其他重复字符。
例如:给定字符串 "abbacd",返回 "abcd"。
示例:
输入:"abbacd"
输出:"abcd"
思路:
使用哈希表来记录出现过的字符,遍历字符串,对每个字符进行判断,如果该字符在哈希表中已经出现过,则删除该字符,否则将该字符加入哈希表中。
代码实现:
相关问题
c++ 删除重复字符pta
引用\[1\]是一个C语言的代码,用于删除字符串中的重复字符并按照ASCII码值从小到大排序。该代码通过遍历字符串,判断字符是否重复,并将非重复字符存储在新的字符数组中。然后使用直接插入排序对新的字符数组进行排序,最后输出排序后的字符数组。
引用\[2\]是一个C++的代码,设计了一个名为reverse_string的函数,用于将给定的字符串逆序。该函数通过遍历字符串,将字符串中的字符按照逆序的顺序重新赋值给原字符串,实现字符串的逆序。
引用\[3\]是另一个C语言的代码,用于删除字符串中的重复字符并按照ASCII码值从小到大排序。该代码通过遍历字符串,判断字符是否重复,并将非重复字符存储在新的字符数组中。然后使用冒泡排序对新的字符数组进行排序,最后输出排序后的字符数组。
根据你的问题,你想要使用C++删除重复字符。你可以使用引用\[2\]中的reverse_string函数来实现。你只需要将该函数的定义部分复制到你的代码中,并在需要删除重复字符的地方调用该函数即可。记得在调用函数之前,将字符串传递给函数作为参数。
#### 引用[.reference_title]
- *1* [PTA:7-4 删除重复字符](https://blog.csdn.net/weixin_60960150/article/details/122130679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [C++ PTA 逆序字符串](https://blog.csdn.net/m0_49271518/article/details/118380156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [pta 7-25 删除重复字符](https://blog.csdn.net/int1145141919/article/details/128498296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
C语言 删除重复字符
如果您想要删除字符串中的重复字符,可以使用以下思路:
1. 创建一个新的字符串,用于存储删除重复字符后的结果。
2. 遍历原始字符串中的每个字符,检查它是否已经存在于新字符串中。
3. 如果字符不存在于新字符串中,则将其添加到新字符串中。
以下是一个示例代码,用于实现上述思路:
```c
#include <stdio.h>
#include <stdbool.h>
// 检查字符是否已经存在于字符串中
bool isCharExists(const char* str, char c) {
while (*str) {
if (*str == c) {
return true;
}
str++;
}
return false;
}
// 删除重复字符
void removeDuplicates(char* str) {
char result[256] = ""; // 假设字符串中的字符范围是ASCII码0-255
int i = 0;
int j = 0;
while (str[i]) {
if (!isCharExists(result, str[i])) {
result[j] = str[i];
j++;
}
i++;
}
result[j] = '\0'; // 添加字符串结束符
// 将删除重复字符后的结果复制回原始字符串
strcpy(str, result);
}
int main() {
char str[] = "Hello World";
printf("原始字符串:%s\n", str);
removeDuplicates(str);
printf("删除重复字符后的字符串:%s\n", str);
return 0;
}
```
输入示例:Hello World
输出示例:删除重复字符后的字符串:Helo Wrd
请注意,以上代码仅是一个示例,实际应用中可能需要根据具体需求进行修改。希望对您有所帮助!如有任何疑问,请随时提问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)