[
greedy
two pointers
math
]
Leetcode 0942. DI String Match
Problem statement
https://leetcode.com/problems/di-string-match/
Solution
We can use greedy strategy here: if we have I
, we can add smallest element, if we have D
, we add biggest element. In this way we always can be sure that conditions hold.
Complexity
It is O(n)
for time and space
Code
class Solution:
def diStringMatch(self, s):
beg, end, ans = 0, len(s), []
for x in s:
if x == "I":
ans += [beg]
beg += 1
else:
ans += [end]
end -= 1
return ans + [beg]