LeetCode150道面试经典题--判断子序列(简单)

1.题目

给定字符串 st ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace""abcde"的一个子序列,而"aec"不是)。

进阶:

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

2.示例

LeetCode150道面试经典题--判断子序列(简单)_第1张图片


3.思路

双指针:
设置两个指针,一个T指针指向T并且遍历t,另一个有效位指针Sindex指向s初始位置,当数组中两者值相等时候S指针下移一位,当有效位指针一旦到达s字符串长度则返回true,否则返回false

4.代码

LeetCode代码:

class Solution {
    public boolean isSubsequence(String s, String t) {
        int sIndex = 0;

        if(s.length() == 0){
            return true;
        }
        for (int i=0;i

LeetCode150道面试经典题--判断子序列(简单)_第2张图片

 案例详细代码:

package LeetCode11;

public class javaDemo {
    public static void main(String[] args) {
        String s = "a";
        String t = "ahbgdc";
        boolean flag = false;

//        S字符串有效位指针
        int sIndex = 0;
//        判断是否为特殊情况即s若为空,则直接输出true
        if (s.equals("")){
            System.out.println(true);
        }else {
//            不是特殊情况则进行双指针判断
            for (int i=0;i

时间复杂度为O(n),空间复杂度为O(1)

你可能感兴趣的:(LeetCode,leetcode,数据结构,算法)