LeetCode解题报告 392. Is Subsequence [medium]

来源:互联网 发布:矩阵音响的连接 编辑:程序博客网 时间:2024/06/05 03:22

题目描述

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 tt 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?

解题思路

由于子串不需要连续,只要保持位置不打乱原来的顺序就可以,因此用两个指针,一个指向原数列,一个指向目标子串即可,遍历一遍原数列可得到结果。

时间复杂度分析

遍历一遍字符串t可得结果,因此时间复杂度为O(n)。

代码如下:
class Solution {public:    bool isSubsequence(string s, string t) {        if (s.length()>t.length()) {            return false;        }        else{            int l1=s.length();            int l2=t.length();            int k=0;            for (int i=0; i<l2; i++) {                if (s[k]==t[i]) {                    k++;                }            }            if (k==l1) {                return true;            }            else                return false;        }    }};



0 0
原创粉丝点击