c语言编辑字符串删除重复字符 aaabbccccdddeeeee abcde
时间: 2023-06-19 20:04:47 浏览: 164
可以使用双指针的方法来实现,具体步骤如下:
1. 定义两个指针i和j,初始值都为0。
2. 从左到右遍历字符串,如果第i个字符和第j个字符不同,则将第i个字符赋值给第j+1个字符,然后i和j都加1,表示下一个字符需要和新的字符进行比较。
3. 如果第i个字符和第j个字符相同,则只将i加1,跳过该字符。
4. 最终,将j+1个字符到字符串结尾的字符全部赋值为空格,表示删除了重复的字符。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
void delete_repeat(char* str) {
int i = 0, j = 0;
int len = strlen(str);
while (i < len) {
if (str[i] != str[j]) {
j++;
str[j] = str[i];
}
i++;
}
str[j + 1] = '\0';
}
int main() {
char str[] = "aaabbccccdddeeeee abcde";
delete_repeat(str);
printf("%s\n", str);
return 0;
}
```
输出结果为:`abcde`。
相关问题
c语言判断字符串是否存在重复字符函数
C语言判断字符串是否存在重复字符的函数,可以通过使用数组和循环来实现。下面给出一个示例的函数实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool hasDuplicateCharacters(const char* str) {
// 用一个数组来统计字符出现的次数,ASCII字符共有256个
int freq[256] = { 0 };
// 遍历字符串中的每个字符
for (int i = 0; str[i] != '\0'; i++) {
// 如果该字符出现过,则返回true
if (freq[(int)str[i]] > 0) {
return true;
}
// 更新字符的出现次数
freq[(int)str[i]]++;
}
// 如果所有字符都未重复出现,则返回false
return false;
}
int main() {
const char* str1 = "abcde";
const char* str2 = "hello";
if (hasDuplicateCharacters(str1)) {
printf("%s 包含重复字符\n", str1);
} else {
printf("%s 不包含重复字符\n", str1);
}
if (hasDuplicateCharacters(str2)) {
printf("%s 包含重复字符\n", str2);
} else {
printf("%s 不包含重复字符\n", str2);
}
return 0;
}
```
该函数中,我们使用了一个长度为256的整型数组freq来统计字符串中每个字符出现的次数。通过遍历字符串中的每个字符,将其对应的数组元素加1来记录出现次数。如果某个字符的出现次数大于1,则说明该字符重复出现,函数返回true;否则,所有字符都未重复出现,函数返回false。
在main函数中,我们调用了hasDuplicateCharacters函数来判断两个字符串str1和str2是否存在重复字符,并输出相应的结果。
需要注意的是,该函数中只能判断ASCII字符范围内的重复字符,如果处理的字符串包含非ASCII字符,可能会出现错误结果。如果需要支持更多字符集,可以使用更高级的算法或数据结构来处理。
用C语言将字符串s中的字符按正序存放到字符串t中, 然后把s中的字符按逆序连接到字符串t的后面。 例如,当s中的字行串为"ABCDE”时 则t中的字符串应为"ABCDEEDCBA”。char s[100],t[100],i,j,s1
[100];
首先,我们需要将字符串s中的字符按正序存放到字符串t中,可以使用strcpy函数实现:
```c
strcpy(t, s);
```
然后,我们需要将s中的字符按逆序连接到t的后面,可以使用for循环遍历s,将每个字符插入到t的末尾:
```c
for (i = strlen(s) - 1, j = strlen(s); i >= 0; i--, j++) {
t[j] = s[i];
}
```
最后,别忘了在t的末尾添加一个字符串结束符号'\0':
```c
t[j] = '\0';
```
完整代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[100], t[100];
int i, j;
printf("Enter a string: ");
scanf("%s", s);
strcpy(t, s);
for (i = strlen(s) - 1, j = strlen(s); i >= 0; i--, j++) {
t[j] = s[i];
}
t[j] = '\0';
printf("Result: %s\n", t);
return 0;
}
```
输入字符串"ABCDE",输出结果为"ABCDEEDCBA"。
阅读全文