N, P, MOD = 200010, 13131, 987654321 h, p = [0] * N, [1] * N classSolution: defisFlipedString(self, s1: str, s2: str) -> bool: iflen(s1) != len(s2): returnFalse if s1 == s2: returnTrue n = len(s1) for i inrange(1, n + 1): h[i] = (h[i - 1] * P + ord(s2[i - 1])) % MOD t = h[n] s1 = s1 + s1 for i inrange(1, 2 * n + 1): h[i] = (h[i - 1] * P + ord(s1[i - 1])) % MOD p[i] = (p[i - 1] * P) % MOD for i inrange(1, n + 1): j = i + n - 1 cur = (h[j] - h[i - 1] * p[j - i + 1]) % MOD if cur == t: returnTrue returnFalse