去掉给定字符串中重复的字符

       例如输入dasdhiwhif,则输出dashiwf

      

        做到这个功能其实并不难,首先先将这个功能封装成一个函数,接收一个字符串arr,再创建一个去掉给定字符串中重复的字符的字符串temp,我们通过两个字符指针来进行操作(因为字符数组等于字符指针),首先遍历arr字符串中的字符,然后再遍历一遍temp[i],若arr[i]与temp中的任一字符相等,证明是重复字符,跳出该层遍历,若都不与temp的任一字符相等,那么显然此时temp[i]的i==strlen(temp),因此在该条件下,就确定arr[i]不是重复出现的字符,再定义一个j=0用来确定temp存储的非重复字符的位置,存储后将j++,指向下一个将要存储的字符,同时将该字符暂时存为'\0'(如果已经没有非重复字符需要存储则该处为字符串终点)。需要注意的是全程没有对两个字符指针做操作,而是通过变量以temp[i],arr[i]的方式进行操作,确保字符指针始终指向字符串开头,便于操作

char* deletechar(char* arr)
{
	int i = 0;
	char* temp = (char*)malloc(sizeof(char) * (strlen(arr)+1));//+1是因为还需要存放一个'\0'
	int j = 0, k = 0;;
	for (i = 0;i<strlen(arr); i++)
	{
		for (k = 0; k < strlen(temp); k++)
		{
			if (arr[i] == temp[k]) break;
		 }
		if (k == strlen(temp))
		{
			temp[j] = arr[i];
			j++;
			temp[j] = '\0';//若已经没有需要存储的非重复字符,则使该字符串结束并且可以实时提供temp此时存储的长度
		}
	}
	return temp;
}
int main()
{
	char *x;
	x = (char*)malloc(sizeof(char) * 80);//80表示长度为80的字符串
	scanf("%s", x);
	char* result = deletechar(x);
	printf("%s", result);
	free(result);
	return 0;
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值