鱼C论坛

 找回密码
 立即注册
查看: 2001|回复: 9

acm 英文题,

[复制链接]
发表于 2015-12-13 14:47:43 | 显示全部楼层 |阅读模式
10鱼币
题目名称:All in All
题目就不原模原样写了,大概意思是 输入二个字符串,从第二个字符串中删掉一些字符 等于前面那个字符,输出 yes,否则输出no.
样例:
sequence  subsequence
person  compression
VERDI  vivaVittorioEmanueleReDiItalia
caseDoesMatter  CaseDoesMatter
输出:
Yes
No
Yes
No

题目不知道有没有理解错,应该没错。
我提交,显示 30%  错误。不知哪里没有考虑全。
代码:
# include <stdio.h>
# include <string.h>
int main()
{
        char a[100050],b[100050],i,j,k,num;
        while(scanf("%s",&a) != EOF && scanf("%s",&b) != EOF)
        {
                i=0;num=0;
                for(j=0;a[j] != '\0';j++)
                {
                        for(k=i;b[k] != '\0';k++)
                        {
                                if(a[j]==b[k])
                                {
                                        i=k+1;
                                        num++;
                                        break;
                                }
                        }
                }
                if(strlen(a) == num)
                   printf("Yes\n");
        else
           printf("No\n");
        }
}

求 大神指教~~~:hug: :hug:

最佳答案

查看完整内容

思路应该是挺清晰的,遍历第二个字符串,逐字符匹配第一个字符串。下面的代码用了Java,不知道能看懂不。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-13 14:47:44 | 显示全部楼层
思路应该是挺清晰的,遍历第二个字符串,逐字符匹配第一个字符串。下面的代码用了Java,不知道能看懂不。
        public static void main(String[] args) {
                System.out.println("please enter two string split the space");
                Scanner in = new Scanner(System.in);
                String string = in.nextLine();
                String str1 = string.split(" ")[0];
                String str2 = string.split(" ")[1];

                int i = 0, j = 0;
                for (; i < str2.length(); i++) {
                        if (str1.charAt(j) == str2.charAt(i)) {
                                j++;
                                if (j >= str1.length()) {
                                        break;
                                }
                        }
                }
                if (j >= str1.length()) {
                        System.out.println("Yes");
                } else {
                        System.out.println("No");
                }
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-13 16:22:24 | 显示全部楼层
本帖最后由 小人 于 2015-12-13 16:36 编辑

看错了  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-13 16:29:46 | 显示全部楼层
小人 发表于 2015-12-13 16:22
VERDI  vivaVittorioEmanueleReDiItalia
caseDoesMatter  CaseDoesMatter  
按照 这两个 栗子 看  就是   ...

是 区分 大小写的,VERDI   vivaVittorioEmanueleReDiItalia。。。。这个后面 那个字符串中 也是有前面那个大写字母的, 最后一个 因为首字母 没有匹配,所以输出 no
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-13 16:34:07 | 显示全部楼层
独一无② 发表于 2015-12-13 16:29
是 区分 大小写的,VERDI   vivaVittorioEmanueleReDiItalia。。。。这个后面 那个字符串中 也是有前面那 ...

我好像看错了  不好意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-13 16:50:48 | 显示全部楼层
小人 发表于 2015-12-13 16:34
我好像看错了  不好意思

大神,我想不出 有什么 特殊例子了。 还有一个疑问  会不会是 scanf 的问题,要用gets,但是用 gets 不知道该如何写,二个 字符串 用空格隔开的,gets 会记录到 一个字符串 中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-13 17:10:24 | 显示全部楼层
独一无② 发表于 2015-12-13 16:50
大神,我想不出 有什么 特殊例子了。 还有一个疑问  会不会是 scanf 的问题,要用gets,但是用 gets 不知 ...

acm 的题 我不会哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-13 17:13:29 | 显示全部楼层
小人 发表于 2015-12-13 17:10
acm 的题 我不会哎

好吧,谢谢啦~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-14 16:42:32 | 显示全部楼层
HHR 发表于 2015-12-14 01:12
思路应该是挺清晰的,遍历第二个字符串,逐字符匹配第一个字符串。下面的代码用了Java,不知道能看懂不。

谢谢了~ 我 java没学。就采纳了把~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-15 11:07:35 | 显示全部楼层
《scanf_s》需要加入个_s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表