九度OJ--1049--字符串去特定字符

来源:互联网 发布:云优化工具 编辑:程序博客网 时间:2024/05/22 02:12

题目1049:字符串去特定字符

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5135

解决:2326

题目描述:

输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。

输入:

测试数据有多组,每组输入字符串s和字符c。

输出:

对于每组输入,输出去除c字符后的结果。

样例输入:
healloa
样例输出:
hello

题目本身不难,但是还是需要注意题目里面隐藏的陷阱,给出我认为几点需要注意的细节。

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;}

0 0
原创粉丝点击