C言語で文字列から同じ文字を削除する方法

文字列内の重複する文字を削除するには、文字列を2重ループで走査し、各文字がその後の文字と同じかどうかを比較します。同じ場合は、その後の文字を文字列の終わりまで削除します。

例のコードは次のとおりです

#include <stdio.h>
#include <string.h>
void removeDuplicates(char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (str[i] == str[j]) {
// 将后面的字符往前移动一位
for (int k = j; k < len - 1; k++) {
str[k] = str[k+1];
}
len--;  // 字符串长度减1
j--;    // 继续比较当前位置的字符
}
}
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
removeDuplicates(str);
printf("删除相同字符后的字符串为:%s\n", str);
return 0;
}

サンプルコードでは、関数 removeDuplicates は文字列パラメータを受け取り二つのループにより同一文字を削除する。メイン関数では、まずユーザーに入力文字列を要求し、次に removeDuplicates 関数で同一文字を削除し、最終的に結果を出力する。

連続する同値文字のみ削除できるため、そうでない文字は削除できません。それ以外の文字を削除したい場合は、別のアルゴリズムやデータ構造が必要になります。

bannerAds