题目1049:字符串去特定字符
题目本身不难,但是还是需要注意题目里面隐藏的陷阱,给出我认为几点需要注意的细节。
1.读清题意,是让你去掉目标字符,有些人可能直接扫一遍字符串,判断是不是该目标字符,进行输出,最终在OJ上提交,也会过,但终究是不符合出题人本意的。
2.输入的字符串中可能有空格,这就意味着不能用scanf或cin,这里可以考虑用gets,同理,目标字符也可能是空格,所以输入可以考虑getchar。
3.每跑完一次数据,别忘了用getchar吃掉回车。
废话说完了,贴上我的代码吧,请大家批正。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string.h>
using namespace std;
char s[10001];
char ch;
int main()
{
int len;
int i,j;
char tmp;
while(gets(s))
{
ch=getchar();
len=strlen(s);
i=0;
j=i+1;
while(j<len)
{
if(s[i]==ch&&s[j]==ch)
{
j++;
}
else if(s[i]==ch&&s[j]!=ch)
{
tmp=s[i];
s[i]=s[j];
s[j]=tmp;
i++;
j++;
}
else
{
i++;
j++;
}
}
if(i==len-1&&s[i]!=ch)
{
s[++i]='\0';
}
else{
s[i]='\0';
}
puts(s);
getchar();
}
return 0;
}