当前位置 : 首页 » 文章分类 :  算法  »  LeetCode.392.Is Subsequence 判断是否子序列

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代码

leetcode-java/problems/_392_IsSubsequence.java
https://github.com/masikkk/leetcode-java/blob/master/problems/_392_IsSubsequence.java


上一篇 LeetCode.350.Intersection of Two Arrays II 两数组的交集2

下一篇 LeetCode.238.Product of Array Except Self 除自身以外数组的乘积

阅读
评论
314
阅读预计2分钟
创建日期 2020-02-08
修改日期 2020-02-08
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论