acm 英文题,
题目名称:All in All题目就不原模原样写了,大概意思是 输入二个字符串,从第二个字符串中删掉一些字符 等于前面那个字符,输出 yes,否则输出no.
样例:
sequencesubsequence
personcompression
VERDIvivaVittorioEmanueleReDiItalia
caseDoesMatterCaseDoesMatter
输出:
Yes
No
Yes
No
题目不知道有没有理解错,应该没错。
我提交,显示 30%错误。不知哪里没有考虑全。
代码:
# include <stdio.h>
# include <string.h>
int main()
{
char a,b,i,j,k,num;
while(scanf("%s",&a) != EOF && scanf("%s",&b) != EOF)
{
i=0;num=0;
for(j=0;a != '\0';j++)
{
for(k=i;b != '\0';k++)
{
if(a==b)
{
i=k+1;
num++;
break;
}
}
}
if(strlen(a) == num)
printf("Yes\n");
else
printf("No\n");
}
}
求 大神指教~~~:hug: :hug: 思路应该是挺清晰的,遍历第二个字符串,逐字符匹配第一个字符串。下面的代码用了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(" ");
String str2 = string.split(" ");
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");
}
} 本帖最后由 小人 于 2015-12-13 16:36 编辑
看错了{:9_220:} 小人 发表于 2015-12-13 16:22
VERDIvivaVittorioEmanueleReDiItalia
caseDoesMatterCaseDoesMatter
按照 这两个 栗子 看就是 ...
是 区分 大小写的,VERDI vivaVittorioEmanueleReDiItalia。。。。这个后面 那个字符串中 也是有前面那个大写字母的, 最后一个 因为首字母 没有匹配,所以输出 no 独一无② 发表于 2015-12-13 16:29
是 区分 大小写的,VERDI vivaVittorioEmanueleReDiItalia。。。。这个后面 那个字符串中 也是有前面那 ...
我好像看错了{:9_240:}不好意思 小人 发表于 2015-12-13 16:34
我好像看错了不好意思
大神,我想不出 有什么 特殊例子了。 还有一个疑问会不会是 scanf 的问题,要用gets,但是用 gets 不知道该如何写,二个 字符串 用空格隔开的,gets 会记录到 一个字符串 中。 独一无② 发表于 2015-12-13 16:50
大神,我想不出 有什么 特殊例子了。 还有一个疑问会不会是 scanf 的问题,要用gets,但是用 gets 不知 ...
acm 的题 我不会哎{:9_240:} 小人 发表于 2015-12-13 17:10
acm 的题 我不会哎
好吧,谢谢啦~~ HHR 发表于 2015-12-14 01:12
思路应该是挺清晰的,遍历第二个字符串,逐字符匹配第一个字符串。下面的代码用了Java,不知道能看懂不。
谢谢了~ 我 java没学。就采纳了把~~ 《scanf_s》需要加入个_s
页:
[1]