[
string
hash table
]
Leetcode 0833 Find And Replace in String
Problem statement
https://leetcode.com/problems/find-and-replace-in-string/
Solution
Let us create dictionary d, where for each i we correspond it to S[i]. Then we iterate through zip(indexes, sources, targets) and if we have match, we change values in d: make d[i] = targ and make all others empty. In this way we can be sure that we store the original indexes.
Complexity
Time complexity is O(S + T), where S is total lenght of sources and T is total lenght of targets. Space complexity is O(T + n).
Code
class Solution:
def findReplaceString(self, S, indexes, sources, targets):
d = {i:S[i] for i in range(len(S))}
for i, sour, targ in zip(indexes, sources, targets):
if S[i:i+len(sour)] == sour:
d[i] = targ
for j in range(i+1, i + len(sour)): d[j] = ""
return "".join(d[i] for i in range(len(S)))