Leetcode——判断子序列 / 判断子串 / 找子序列 / 找子串

这篇博客探讨了字符串处理中的关键问题,包括判断子序列、子串以及找出字符串中的子集。介绍了两种不同的双指针方法来判断子序列,以及使用`indexOf` API的解决方案。对于子串,通过`contains`和`indexOf`方法进行查找。在找子集部分,提供了无重复和有重复元素时的递归算法实现。此外,还展示了如何获取字符串的所有子串。这些算法和方法在字符串处理中具有广泛应用。
摘要由CSDN通过智能技术生成

1. 判断子序列(相对位置是不变的)

在这里插入图片描述

(1)双指针

使用两个指针分别指向两个字符串的起始索引,每次循环判断两个指针指向的字符是否相等,相等则两个指针向右移动,不相等则只移动 s 的指针。最后如果 t 指针移动到末尾,则 t 是为 s 的子序列。

class Solution {
   

    public boolean isSubsequence(String t, String s) {
   
        int indext = 0, indexs = 0;
        while (indext < t.length() && indexs < s.length()) {
   
            if (t.charAt(indext) == s.charAt(indexs)) {
   
                indext++;
            }
            indexs++;
        }
        return indext == t.length();
    }
}

(2)使用API

直接使用 indexOf 方法,判断从指定下标起,是否存在字符 c。不存在,则 t 不是为 s 的子序列

class Solution {
   
    
    public boolean isSubsequence(String t, String s) {
   
        int index = -1;
        for (int i = 0; i < t.length(); i++) {
   
        	//从index + 1开始获取字符t.charAt(i)在s中的的位置
            index = s.indexOf(t.charAt(i), index + 1);		
            if (index == -1) {
   
                return false;
            }
        }
        return true;
    }
}

2. 判断子串

(1) contains

方法返回true,当且仅当此字符串包含指定的char值序列

public static void main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yawn__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值