题目描述
牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒,藏宝盒上有一个机关,机关每次会显示两个字符串 s 和 t,根据古老的传说,牛牛需要每次都回答 t 是否是 s 的子序列。注意,子序列不要求在原字符串中是连续的,例如串 abc,它的子序列就有 {空串, a, b, c, ab, ac, bc, abc} 8 种。
输入描述:
每个输入包含一个测试用例。每个测试用例包含两行长度不超过 10 的不包含空格的可见 ASCII 字符串。
输出描述:
输出一行 “Yes” 或者 “No” 表示结果。
示例1
输入
x.nowcoder.com ooo
输出
Yes
输入
oxoxoxox ooxxoo
输出
No
【解决】
① 子序列问题,需要保证t在s中的顺序。
import java.util.Scanner;
/**
* 网易——藏宝图,子序列问题,按照在s中的顺序
* created by liyurong
**/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String s = sc.next();
String t = sc.next();
String res = isSubSeq(s.toCharArray(),t.toCharArray());
System.out.println(res);
}
sc.close();
}
public static String isSubSeq(char[] schar,char[] tchar){
if (tchar == null) return "Yes";
if (schar == null) return "No";
int len1 = schar.length;
int len2 = tchar.length;
if (len1 < len2) return "No";
int p1 = 0;
int p2 = 0;
while (p1 < len1 && p2 < len2){
if (schar[p1] == tchar[p2]){
p2 ++;
}
p1 ++;
}
if (p2 == len2){
return "Yes";
}else {
return "No";
}
}
}