Problem
You are given two strings s
and t
of the same length and an integer maxCost
.
You want to change s
to t
. Changing the ith
character of s
to ith
character of t
costs |s[i] - t[i]|
(i.e., the absolute difference between the ASCII values of the characters).
Return the maximum length of a substring of s
that can be changed to be the same as the corresponding substring of t
with a cost less than or equal to maxCost
. If there is no substring from s
that can be changed to its corresponding substring from t
, return 0
.
Examples
Example 1:
|
|
Example 2:
|
|
Example 3:
|
|
Solution
Method 1 - Sliding Window
Assume we have a window bound by left
and right
. We will track currCost
to see if are using the maxCost
optimally. We will extend the right boundary, and update the current cost, and keep on extending it, till the current cost has overrun the max cost.
Now, when we overrun the max cost, we shrink the window from left, because we have already seen those elements.
At any time, we will keep track of max length of window, because that is the max length of the substring, which we need as output.
Video explanation
Here is the video explaining this method in detail. Please check it out:
Code
|
|
Complexity
- ⏰ Time complexity:
O(n)
- 🧺 Space complexity:
O(1)