C 语言删除字符串中所有重复字符的程序

编写一个 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;
}
C Program to Remove All Duplicate Character in a String 1

在这里,我们使用 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

评论已关闭。