输入一个长度不超过100的字符串,删除串中的重复字符。

在这里插入图片描述

#include <stdio.h>
#include <string.h>
#define N 200
int main()
{
char a[N]; //存储字符串.
int i,j,n;
char k;
gets(a);//读入字符串.
//控制外层循环的趟次,并提供趟次号变量i
int f=strlen(a);
for(i=0;i<strlen(a);i++)
{
for(n=0;n<i;n++)//内层遍历从i=1开始进入,控制各趟次内需要执行循环的次数
{
if(a[i]==a[n]) //n比i更加常变:每趟比较中,i只有相同的一个值,而n由i个值.;每一趟中,i就作为一个标杆
{ //a[i] == a[n]意味着出现了重复字符;
//下面这个循环将下一个值替代上一个值,即相当于把位置i之后的那部分子字符串向前集体地挪了一格,从而减小重复字符串的规模
for(j=i;j<f;j++)
{
a[j]=a[j+1]; //迭代a[j] ,并对字符数组(字符串)做出了该改变(j+1)可以触及到字符串结束符'\0' !
}
//i=i-1;//将这轮发生处理地循环重新执行??/(迭代),最外层i++会加回到这个i,
i -= 1;
break;//直达外层for
}//刚从此处离开后,n++(n将+1),之后,在这一轮发生地if将是上一轮规模地比较,不会再更改字符串了,直到外层地i++后重新开始
}
//刚从此处离开后,会执行在外面一层地循环变量迭代(i++)
}
puts(a);
return 0;
}

版本二:

#define _CRT_SECURE_NO_WARNINGS
/* 题目描述
输入一个长度不超过100的字符串,删除串中的重复字符。
输入要检查的字符串,长度不超过100个字符:abacaeedabcded.
输出删除重复字符后的字符串:abced.
样例输入saas
样例输出sa
*/
//握手模型;最理想地输入的比较次数规模(1+2+..+n)地规模(类似勾股数枚举)
#include <stdio.h>
#include <string.h>
int main()
{
//int a[100] = { 0 };
char a[100] = { 0 };
int i, j;
gets(a);
int len = strlen(a);
for (i = 0; i < len; i++)
{
const char tmp = a[i];
if (tmp != -1)
{
for (j = i + 1; j < len; j++)
{
if (tmp == a[j])
{
a[j] = -1;
}
}
}
}
for (int i = 0; i < len; i++)
{
if (a[i] != -1)
{
printf("%c", a[i]);
}
}
printf("\n");
}
/*失败的彩蛋*/
//for (i = 0; i < len; i++)
//{/*用最简单的输入测试:dd */
// const char tmp = a[i];
// for (j = i + 1; j < len; j++)
// {
// if (tmp == a[j])
// {
// for (int k = j; k < len - 1; k++)
// {
// a[k] = a[k + 1];/*要注意:k+1<len(或说k<=len-1)*/
// }
// len--;
// j = i + 1;
// }
// }//for
//}//for
posted @   xuchaoxin1375  阅读(54)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-10-31 PT_大数定律LLN
2021-10-31 powershell@scoop安装的若干方法@scoop安装失败的解决方案@国内镜像加速下载scoop本身和scoop软件源bucket
2021-10-31 win11@安装WSA(android系统)@命令行安装app
点击右上角即可分享
微信分享提示