833. Find And Replace in String

class Solution:
    def findReplaceString(self, s: str, indices: List[int], sources: List[str], targets: List[str]) -> str:

        def sort_arrays(arr1, arr2, arr3):
            combined = zip(arr1, arr2, arr3)
            sorted_combined = sorted(combined)
            arr1_sorted, arr2_sorted, arr3_sorted = zip(*sorted_combined)
            return list(arr1_sorted), list(arr2_sorted), list(arr3_sorted)

        indices, sources, targets = sort_arrays(indices, sources, targets)
        startPos = 0
        res = []
        
        for i in range(len(indices)):
            source = sources[i]
            if s[indices[i] : indices[i] + len(source)] == source:
                if startPos != indices[i]:
                    res.append(s[startPos : indices[i]])
                res.append(targets[i])
                startPos = indices[i] + len(source)


        if startPos < len(s):
            res.append(s[startPos:])

        return "".join(res)