C语言删除字符串中重复字符:高效代码实现与示例
#include <stdio.h> #include <string.h> #include <ctype.h> // 包含tolower函数
void del(char s[]) { int len = strlen(s); int i, j, k; // 将所有字符转换为小写,方便判断 for(i = 0; i < len; i++) { s[i] = tolower(s[i]); } // 从后往前遍历字符串 for(i = len - 1; i >= 0; i--) { // 如果该字符已经被删除,则跳过 if(s[i] == '\0') { continue; } // 从后往前找到与该字符相同的最后一个字符 for(j = i - 1; j >= 0; j--) { if(s[j] == '\0') { continue; } if(s[i] == s[j]) { break; } } // 如果找到了相同的字符 if(j >= 0) { // 将中间的重复字符删除 for(k = j + 1; k < i; k++) { s[k] = '\0'; } } } // 去掉所有被删除的字符 for(i = j = 0; i < len; i++) { if(s[i] != '\0') { s[j++] = s[i]; } } s[j] = '\0'; // 字符串结尾 }
int main() { char s[100]; printf("请输入一个字符串:"); gets(s); del(s); printf("删除重复字符以后的字符串是:%s\n", s); return 0; }
原文地址: https://www.cveoy.top/t/topic/o0kV 著作权归作者所有。请勿转载和采集!