📜  算法测验|须藤放置[1.7] |问题15(1)

📅  最后修改于: 2023-12-03 15:11:33.436000             🧑  作者: Mango

算法测验 | 须藤放置[1.7] | 问题15

问题描述

给定两个字符串AB,请你判断B是否为A的字串。

解题思路

可使用双指针的算法思路。

首先定义两个指针ij,分别指向字符串AB的首位字符。

然后,我们不断地将两个指针往后移动,当字符串A中的字符与字符串B中的字符相等时,指针ij都往后移动一位,否则只将指针i往后移动一位。

最后当指针j已经到了字符串B的结尾时,就可以判断B是否为A的字串了。

代码实现
def is_substring(s: str, t: str) -> bool:
    i = j = 0
    while i < len(s) and j < len(t):
        if s[i] == t[j]:
            j += 1
        i += 1
    return j == len(t)
复杂度分析

时间复杂度为$O(n)$,其中$n$为字符串A的长度。

空间复杂度为$O(1)$,因为只使用了常数级别的额外空间。