Description
You are given two strings s and t.
You are allowed to remove any number of characters from the string t.
The score of the string is 0 if no characters are removed from the string t, otherwise:
- Let leftbe the minimum index among all removed characters.
- Let rightbe the maximum index among all removed characters.
Then the score of the string is right - left + 1.
Return the minimum possible score to make tΒ a subsequence of s.
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 = "abacaba", t = "bzaa" Output: 1 Explanation: In this example, we remove the character "z" at index 1 (0-indexed). The string t becomes "baa" which is a subsequence of the string "abacaba" and the score is 1 - 1 + 1 = 1. It can be proven that 1 is the minimum score that we can achieve.
Example 2:
Input: s = "cde", t = "xyz" Output: 3 Explanation: In this example, we remove characters "x", "y" and "z" at indices 0, 1, and 2 (0-indexed). The string t becomes "" which is a subsequence of the string "cde" and the score is 2 - 0 + 1 = 3. It can be proven that 3 is the minimum score that we can achieve.
Β
Constraints:
- 1 <= s.length, t.length <= 105
- sand- tconsist of only lowercase English letters.
Solution
Python3
class Solution:
    def minimumScore(self, s: str, t: str) -> int:
        N, M = len(s), len(t)
        j = 0
        leftMost = []
 
        for i, x in enumerate(s):
            if x == t[j]:
                j += 1
            
            if j == M: return 0
 
            leftMost.append(j)
        
        res = M
        right = M - 1
 
        for i in range(N - 1, -1, -1):
            if leftMost[i] <= right:
                res = min(res, right - leftMost[i] + 1)
            
            if s[i] == t[right]:
                right -= 1
            
            res = min(res, right + 1)
 
        return res