Suppose we have a lowercase string s with letters x and y. Now consider an operation in which we change a single x to y or vice versa. We have to find the minimum number of times we need to perform that operation to set all x's come before all y's.
So, if the input is like s = "yxyyyyxyxx", then the output will be 4.
To solve this, we will follow these steps −
y_left := 0
x_right := number of "x" in s, res := number of "x" in s
for each item in s, do
if item is same as "x", then
x_right := x_right − 1
otherwise,
y_left := y_left + 1
res := minimum of res and (y_left + x_right)
return res
Let us see the following implementation to get better understanding −
Example
class Solution: def solve(self, s): y_left = 0 x_right = res = s.count("x") for item in s: if item == "x": x_right -= 1 else: y_left += 1 res = min(res, y_left + x_right) return res ob = Solution() s = "yxyyyyxyxx" print(ob.solve(s))
Input
"yxyyyyxyxx"
Output
4