题目描述:
牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒, 藏宝盒上有一个机关, 机关每次会显示两个字符串s和t, 根据古老的传说,牛牛每次都回答t是否是s的子序列。注意,子序列不要求在原字符串中是连续的, 例如串abc, 它的子序列就有{空串,a,b,c,ab,ac,bc,abc}8种。
输入描述:
每个输入包含一个测试用例,每个测试用例包含两行长度不超过10的不包含空格的可见ASCII字符串。
输出描述:
输出一行”Yes”或者”No”表示结果。
输入例子:
group.jobbole.com
ooo
输出例子:
Yes
方法实现
思路:把s和t分别转成字符数组sc[]、tc[],用i、j分别表示sc和tc的下标。将sc的下标i每后移一位指向的当前元素sc[i]和当前tc的元素tc[j]进行比较,如果sc[i]==tc[j],则j++。当i已经指向sc的最后一个元素,而j还没指向tc的最后一个元素时,匹配失败,输出”No”。反之,匹配成功,输出”Yes”。关键代码如下:
public String matchString(String s,String t){
char[] sc=new char[s.length()];
sc=s.toCharArray();//把字符串转成字符数组
char[] tc=new char[t.length()];
tc=t.toCharArray();
int i=0;//sc下标
int j=0;//tc下标
while(i<sc.length&&j<tc.length){
if(sc[i]==tc[j]){
j++;
}
i++;
}
if(j==tc.length){
return "yes";
}
return "no";
}