LeetCode 392 Is Subsequence

本文介绍了一个简单的算法来解决子序列检查问题,即判断一个字符串是否为另一个字符串的子序列。通过遍历较短字符串并在较长字符串中查找相应字符,确保了字符间的相对顺序不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 翻译:给你两个字符串,判断s是不是t的子串,s的每个字符在t中的相对顺序不能边,但是可以不连续。比如abc是abcde的子串,也是ahbgdc的子串,但是不是ahbgdc的子串。 这个题我用了一个简单粗暴的方法,最后还超过了93.52%的提交。 算法: 假如我们已经确定s的前i位是t的子串,如果s[i+1]在t中出现那么s可能是t的子串,否则一定不是子串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
     * @param s
     * @param t
     * @return
     */
    public static boolean isSubsequence(String s, String t) {
        if (s.length() > t.length())
            return false;
        char[] sArr = s.toCharArray();
        int index = -1;
        for (int i = 0; i < sArr.length; i++) {
            index = t.indexOf(s.charAt(i), index + 1);
            if (index == -1)
                return false;
        }
        return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值