编制函数,将字符串中连续的相同字符仅保留 1 个c语言
时间: 2024-02-28 15:56:45 浏览: 23
可以使用一个循环来遍历字符串,检查当前字符和前一个字符是否相同,如果相同则将其删除,否则保留。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
void remove_duplicates(char *str) {
int len = strlen(str);
int i, j;
for (i = 1, j = 1; i < len; i++) {
if (str[i] != str[i - 1]) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[] = "aaabbbcccdddeee";
remove_duplicates(str);
printf("%s\n", str); // 输出:abcde
return 0;
}
```
在上面的代码中,`remove_duplicates` 函数接受一个字符串参数,并在原地修改字符串,使得连续的相同字符仅保留1个。该函数首先计算字符串的长度,然后使用两个指针 `i` 和 `j` 来遍历字符串。指针 `i` 从第二个字符开始,指针 `j` 记录输出字符串的长度。如果当前字符和前一个字符不同,则将其保存在 `j` 指向的位置,并将 `j` 加1。最后,将字符串的结束符 `\0` 添加到输出字符串的末尾。
相关问题
用C语言编制函数,将字符串中连续的相同字符仅保留1个(字符串"a bb cccd ddd ef"处理后为"a b cd d ef")
可以使用如下的C语言函数来实现字符串中连续的相同字符仅保留1个的功能:
```c
#include<stdio.h>
#include<string.h>
void removeDuplicateChars(char* str) {
int i, j, len;
len = strlen(str);
for(i=0; i<len; i++) {
while(str[i] == str[i+1]) {
for(j=i+1; j<len; j++) {
str[j] = str[j+1];
}
len--;
}
}
}
int main() {
char str[] = "a bb cccd ddd ef";
removeDuplicateChars(str);
printf("%s\n", str);
return 0;
}
```
这个函数首先通过循环遍历字符串中的每一个字符,然后判断当前字符是否和下一个字符相同,如果相同就将下一个字符删除,并且将字符串长度减1,直到当前字符和下一个字符不相同为止。最终得到的字符串就是连续的相同字符仅保留1个的形式。
C语言如何写个函数删除字符串中的重复字符
可以使用双重循环来实现:
```c
void deleteRepeatChar(char* str) {
int len = strlen(str);
if (len < 2) return; // 字符串长度小于2,直接返回
int tail = 1; // 不重复的字符的尾部索引
for (int i = 1; i < len; i++) {
bool isRepeat = false;
for (int j = 0; j < tail; j++) {
if (str[i] == str[j]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
str[tail] = str[i];
tail++;
}
}
str[tail] = '\0'; // 字符串尾部添加'\0',表示结束
}
```
这个函数会把传入的字符串中重复的字符删除,只保留第一次出现的字符。