美文网首页
14. Is Subsequence

14. Is Subsequence

作者: 邓博文_7c0a | 来源:发表于2018-01-03 17:20 被阅读0次

    Link to the problem

    Description

    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

    Input: s = "abc", t = "ahbgdc", Output: true
    Input: s = "axc", t = "ahbgdc", Output: false

    Idea

    Use two pointers. Start from the beginning of the two strings. When there is a match, advance both; otherwise, advance pointer on t. Returns true if and only if the pointer on s has reach the end.

    Solution

    class Solution {
    public:
        bool isSubsequence(string s, string t) {
            int m = s.size(), n = t.size();
            int p1 = 0, p2 = 0;
            while (p1 < m && p2 < n) {
                if (s[p1] == t[p2]) {
                    p1++;
                    p2++;
                } else {
                    p2++;
                }
            }
            return p1 == m;
        }
    };
    

    14 / 14 test cases passed.
    Runtime: 93 ms

    相关文章

      网友评论

          本文标题:14. Is Subsequence

          本文链接:https://www.haomeiwen.com/subject/lgfknxtx.html