定义一个函数 删除字符串中重复的字符 每个字符只出现一次C语言
时间: 2024-05-04 19:19:21 浏览: 12
以下是一个基于C语言的删除字符串中重复字符的函数:
```c
void removeDuplicates(char* str) {
int len = strlen(str);
if (len < 2) return;
int tail = 1;
for (int i = 1; i < len; i++) {
int j;
for (j = 0; j < tail; j++) {
if (str[i] == str[j]) break;
}
if (j == tail) {
str[tail] = str[i];
tail++;
}
}
str[tail] = 0;
}
```
函数的实现思路是维护一个指针tail,表示下一个非重复字符要放置的位置。从第二个字符开始遍历字符串,对于每个字符,再遍历到目前为止的所有非重复字符,看是否存在与之相同的字符。如果不存在,则将该字符放到tail指向的位置,并将tail向后移动一位。最后在tail指向的位置加上一个字符串结束符'\0',表示新字符串的结束位置。
相关问题
c语言 定义一个函数,删除字符串中重复的字符,每个字符只出现一次
以下是一个简单的 C 语言函数,可以删除字符串中重复的字符,每个字符只出现一次:
```c
#include <stdio.h>
#include <string.h>
void remove_duplicates(char str[]) {
int len = strlen(str);
int i, j, k;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len;) {
if (str[j] == str[i]) {
for (k = j; k < len; k++) {
str[k] = str[k + 1];
}
len--;
} else {
j++;
}
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, 100, stdin);
remove_duplicates(str);
printf("Result: %s", str);
return 0;
}
```
这个函数使用两个嵌套的循环来遍历字符串中的每个字符。外层循环从第一个字符开始,内层循环从外层循环的下一个字符开始,如果两个字符相同,则将内层循环的字符删除。删除字符后,字符串的长度会减少,因此需要更新字符串的长度。最终,函数会返回一个不包含重复字符的字符串。
定义一个函数,删除字符串中重复的字符,每个字符只出现一次 c语言
以下是一个基于C语言的函数,可以删除字符串中重复的字符,只留下每个字符的第一个出现。
```c
#include <stdio.h>
#include <string.h>
void removeDuplicates(char *str) {
int len = strlen(str);
if (len < 2) {
return;
}
int tail = 1;
for (int i = 1; i < len; i++) {
int j;
for (j = 0; j < tail; j++) {
if (str[i] == str[j]) {
break;
}
}
if (j == tail) {
str[tail++] = str[i];
}
}
str[tail] = '\0';
}
int main() {
char str[] = "hello world";
removeDuplicates(str);
printf("%s\n", str);
return 0;
}
```
在这个函数中,我们使用了两个指针,一个是tail指针,它始终指向当前不重复的最后一个字符,另一个是i指针,它从第二个字符开始向后遍历。对于每个i指向的字符,我们在tail指针之前寻找是否存在相同的字符,如果没有找到,则将这个字符添加到tail指针的后面,并将tail指针向后移动一位。最后,我们在tail指针的位置插入一个空字符,以表示字符串的结尾。