刚才去考C语言实验,我以为对我来说会很简单,然而现实却给我沉重的打击。其实题目并不难,只因为我实在太,嗯,自大,有一道题目写错了。加上时间太紧张,我也太紧张,没有办法修改,就这一草草提交了。
我描述一下我写错的这道题目,一点都不难🙃:
给出一个字符串,把除第一个出现的重复字符去掉。如对aabbccabcd,输出abcd。
乍一看,很简单吧?我当时就想,这么简单,不秀一些骚操作岂不是显得自己太无能?于是就开始秀了,于是就把自己秀死了!我的思路是把第一次出现的每个字符存在一个新的数组中,把重复出现的字符前移:
char s[100]; //存放要处理的字符串
char set[100]; //存放第一次出现的字符集
char *p = s;
while (*p++ != '\0')
{
if (ifrepeat(set, p))
move(p); //让p后的每一个字符往前移
else
add(set, *p);
}
printf("%s", s);
int ifrepeat(char *set, char *p)
{
while (*set++!=*p && *set!='\0' )
{
set++;
}
return *set;
}
void add(char *set, char *p)
{
while (*set++!='\0')
{
;
}
*set = *p;
*(set+1) = '\0';
return;
}