All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0301_0400.s0392_is_subsequence.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0301_0400.s0392_is_subsequence;

// #Easy #String #Dynamic_Programming #Two_Pointers #Dynamic_Programming_I_Day_19
// #Level_1_Day_2_String #Udemy_Two_Pointers #2022_07_13_Time_1_ms_(93.01%)_Space_42.2_MB_(32.57%)

/**
 * 392 - Is Subsequence\.
 *
 * Easy
 *
 * 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.
 *
 * **Follow up:** Suppose there are lots of incoming `s`, say s1, s2, ..., sk where k >= 109, and you want to check one by one to see if `t` has its subsequence. In this scenario, how would you change your code?
**/
public class Solution {
    public boolean isSubsequence(String s, String t) {
        int i = 0;
        int j = 0;
        int n = t.length();
        int m = s.length();
        if (m == 0) {
            return true;
        }
        while (j < n) {
            if (s.charAt(i) == t.charAt(j)) {
                i++;
                if (i == m) {
                    return true;
                }
            }
            j++;
        }
        return false;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy