菜鸟求指点一个小东西高手指点一下 绝对结贴给分
要求是随便输入一串字符(如果能做出无限长度的更好,不行的话小于50个字符也行) 其中一样且挨在一起的字符相抵消 例如输入assd则输出ad 如果输入asddsf则输出af 我自己写了一个脚本 结果很差漏洞别处 估计是算法上的错误;高手指点一下。
#include<stdio.h>
int main()
{
int a,b;
char c[50];
for(a=0,b=0;(c[a]=getchar())!='\n';a++)
{
if(c[a]==c[a-1])
{
a--;
b=1;
}
else
{
if(b==1)
{
a-=2;
b=0;
}
}
}
for(;a<50;a++)
c[a]=32;
printf("%s",c);
return 0;
}
[解决办法]
数组也可以做的啊,你申请一个另外的数组,一个一个存进去
other[];
如果前面一个跟要存的一样就删除前面的一个!懂了吧?
[解决办法]
稍作改动,还是可以做到:
#include<stdio.h>int main(){ int a=-1,a1=-1; char b; char c[500]; while((b=getchar())!='\n') { if (a==-1||c[a]!=b) // 如果栈空或当前字符与栈顶字符不等 { if (a1==-1||c[a1]!=b) // 且与刚出栈字符也不相等 { c[++a]=b; // 则当前字符入栈 a1=a; } // 若与刚出栈字符相等,则消去当前字符 } else a1=a--; // 否则栈顶字符退栈,与当前字符抵消 } c[++a]='\0'; printf("%s",c); return 0;}