编写一个 C 语言程序,删除字符串中的所有重复字符并附带示例。
C 语言删除字符串中所有重复字符的示例 1
此程序允许用户输入一个字符串(或字符数组),以及一个字符值。接下来,它将查找并删除字符串中的所有重复字符。
/* C Program to Remove All Duplicate Character in a String */
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, k;
printf("\n Please Enter any String : ");
gets(str);
for(i = 0; i < strlen(str); i++)
{
for(j = i + 1; str[j] != '\0'; j++)
{
if(str[j] == str[i])
{
for(k = j; str[k] != '\0'; k++)
{
str[k] = str[k + 1];
}
}
}
}
printf("\n The Final String after Removing All Duplicates = %s ", str);
return 0;
}

在这里,我们使用 For Loop 迭代字符串中的每个字符,并删除其中的所有重复字符。
for(i = 0; i < strlen(str); i++)
{
for(j = i + 1; str[j] != '\0'; j++)
{
if(str[j] == str[i])
{
for(k = j; str[k] != '\0'; k++)
{
str[k] = str[k + 1];
}
}
}
}
str[] = helloh
ch = l
第一个 For Loop – 第一次迭代:for(i = 0; i < strlen(str) ; i++)
条件为 True,因为 0 < 6。
接下来,它将进入第二个 For Loop
第二个 For Loop – 第一次迭代:for(j = i + 1; str[j] != ‘\0’; j++)
=> for(j = 1; e != ‘\0’; 1++)
在 C Programming For Loop 中,我们使用 If statement 来检查 str[1] 是否等于 str[0]
if(str[j] == str[i]) => if(e == h)
上述条件为 False。因此,i 将递增。
第二个 For Loop – 第二次迭代:for(j = 2; l != ‘\0’; 2++)
if(str[j] == str[i]) => if(l == h) – 条件为 False。因此,i 将递增。
第二个 For Loop – 第三次迭代:for(j = 3; l != ‘\0’; 3++)
if(str[j] == str[i]) => if(l == h) – 条件为 False。因此,i 已递增。
第二个 For Loop – 第四次迭代:for(j = 4; o != ‘\0’; 4++)
if(str[j] == str[i]) => if(o == h) – 条件为 False。因此,i 将递增。
第二个 For Loop – 第五次迭代:for(j = 5; h != ‘\0’; 5++)
if(str[j] == str[i]) => if(h == h)
上述条件为 True。因此,它将进入第三个 For Loop
第三个 For Loop – 第一次迭代:for(k = j; str[k] != ‘\0’; k++)
=> for(k = 5; str[5] != ‘\0’; 5++)
str[k] = str[k + 1];
str[k] = ‘\0’
第三个 For Loop – 第二次迭代:for(k = 6; ‘\0’ != ‘\0’; 6++)
条件失败。因此,它将退出第三个 For Loop。
对剩余的迭代执行相同的操作。
最后,我们使用 printf 语句打印最终的字符串
printf("\n The Final String after Removing All Duplicates = %s ", str);
C 语言删除字符串中所有重复字符的示例 2
此 程序 与上述程序相同。这里,我们用 While Loop 替换了 For Loop。
/* C Program to Remove All Duplicate Character in a String */
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, k;
i = 0;
printf("\n Please Enter any String : ");
gets(str);
while(i < strlen(str))
{
j = i + 1;
while(str[j] != '\0')
{
if(str[j] == str[i])
{
k = j;
while(str[k] != '\0')
{
str[k] = str[k + 1];
k++;
}
}
j++;
}
i++;
}
printf("\n The Final String after Removing All Duplicates = %s ", str);
return 0;
}
Please Enter any String : tutorial gateway
The Final String after Removing All Duplicates = tuorial gewy
C 语言删除字符串中所有重复字符的示例 3
此 程序 与第一个示例相同,但这次我们使用了 Functions 概念来分离逻辑。
/* C Program to Remove All Duplicate Character in a String */
#include <stdio.h>
#include <string.h>
void Remove_AllOccurrence(char *str);
int main()
{
char str[100];
printf("\n Please Enter any String : ");
gets(str);
Remove_AllOccurrence(str);
printf("\n The Final String after Removing All Duplicates = %s ", str);
return 0;
}
void Remove_AllOccurrence(char *str)
{
int i, j, k;
for(i = 0; i < strlen(str); i++)
{
for(j = i + 1; str[j] != '\0'; j++)
{
if(str[j] == str[i])
{
for(k = j; str[k] != '\0'; k++)
{
str[k] = str[k + 1];
}
}
}
}
}
Please Enter any String : c programming language
The Final String after Removing All Duplicates = c progaminlue
C 语言删除字符串中所有重复字符的示例 4
在此 程序 中,我们使用另一个函数进一步细分了代码。
/* C Program to Remove All Duplicate Character in a String */
#include <stdio.h>
#include <string.h>
void Remove_AllDuplicates(char *str);
void Remove_AllOccurrence(char *str, const char ch, int index);
int main()
{
char str[100];
printf("\n Please Enter any String : ");
gets(str);
Remove_AllDuplicates(str);
printf("\n The Final String after Removing All Duplicates = %s ", str);
return 0;
}
// This will remove all the Duplicates
void Remove_AllDuplicates(char *str)
{
int i;
for(i = 0; i < strlen(str); i++)
{
/* Calling Remove_AllOccurrence function to remove all the occurrence
of this particular character */
Remove_AllOccurrence(str, str[i], i + 1);
}
}
// This will remove all the Occurrence of any single character
void Remove_AllOccurrence(char *str, const char ch, int index)
{
int k;
while(str[index] != '\0')
{
if(str[index] == ch)
{
for(k = index; str[k] != '\0'; k++)
{
str[k] = str[k + 1];
}
}
index++;
}
}
Please Enter any String : welcome to tutorial gateway
The Final String after Removing All Duplicates = welcom turia gay
评论已关闭。