Is Subsequence

Given two strings s and t, return true if s is a subsequence of t, or false otherwise.

A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e., "ace" is a subsequence of "abcde" while "aec" is not).

 

Example 1:

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

Example 2:

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

 

Constraints:

  • 0 <= s.length <= 100

  • 0 <= t.length <= 104

  • s and t consist only of lowercase English letters.

My Solution

We can solve this problem with the two pointer technique. One pointer starts at the start of s. The other pointer starts at the start of t. If the characters at the two pointers match, we move both pointers forward. Otherwise we only move t’s pointer forward. If we reach the end of s, then it is a subsequence so we return true. Otherwise, we return false.

class Solution {
    public boolean isSubsequence(String s, String t) {
        int i = 0;
        int j = 0;
        int m = s.length();
        int n = t.length();

        while (i < m && j < n) {
            if (s.charAt(i) == t.charAt(j)) {
                i++;
            }
            j++;
        }

        return (i == m);
    }
}
Previous
Previous

Minimum Number of Pushes to Type Word

Next
Next

Find the Difference