1 解题思想
给定了S和T,让你判断S是否是T的子序列,其中T会非常大,S不大
这道题做法很简单,两个指针就可以,无论如何指向T的每轮都要前进,而S的那个只有当当前指针下S和T一致的情况下才前进
记得提前转换成数组,不然超时!
2 原题
Given a string s and a string t, check if s is subsequence of t.
You may assume that there is only lower case English letters in both s and t. t is potentially a very long (length ~= 500,000) string, and s is a short string (<=100).
A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ace" is a subsequence of "abcde" while "aec" is not).
Example 1:
s = "abc", t = "ahbgdc"
Return true.
Example 2:
s = "axc", t = "ahbgdc"
Return false.
3 AC解
public class Solution {
/**
* 直接顺序判断就可以了 s必须至少匹配一个,t可以匹配也可以跳过,注意先转化成数组*/
public boolean isSubsequence(String s, String t) {
int i=0,j=0;
char[] ss=s.toCharArray();
char[] tt=t.toCharArray();
while(i<ss.length && j<tt.length){
if(ss[i] == tt[j]){
i++;
}
j++;
}
return i==s.length();
}
}