LeetCode.392.Is Subsequence 判断是否子序列
题目描述
392 Is Subsequence
https://leetcode-cn.com/problems/is-subsequence/
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.
Follow up:
If there are lots of incoming S, say S1, S2, … , Sk where k >= 1B, and you want to check one by one to see if T has its subsequence. In this scenario, how would you change your code?
解题过程
判断字符串 s 是否字符串 t 的子序列,子序列是可以不重复的,只要顺序一致即可。
双指针,相等时前进,结束后s中每个元素都依次找到t中相等的元素就是true
时间复杂度 O(n)
空间复杂度 O(1)
private static class SolutionV2020 {
public boolean isSubsequence(String s, String t) {
if (null == s || null == t) {
return null == s;
}
char[] ss = s.toCharArray();
char[] tt = t.toCharArray();
int i = 0, j = 0;
for (; i < ss.length && j < tt.length; j++) {
if (ss[i] == tt[j]) {
i++;
}
}
return i == ss.length;
}
}
GitHub代码
algorithms/leetcode/leetcode/_392_IsSubsequence.java
https://github.com/masikkk/algorithms/blob/master/leetcode/leetcode/_392_IsSubsequence.java
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: