Count Triplets That Can Form Two Arrays of Equal XOR LeetCode solution in Python
1class Solution:2def countTriplets(self, arr: List[int]) -> int:3s = [0]4n = len(arr)5if n <= 1:6return 07for i in range(n):8s.append(s[-1] ^ arr[i])9# a = s[i] ^ s[j], b = s[j] ^ s[k+1]10count = defaultdict(int)11# a = b <-> a ^ b == 0 <-> (s[i] ^ s[j]) ^ (s[j] ^ s[k+1]) == 012# <-> s[i] ^ (s[j] ^ m ) = 0 (where m = s[j] ^ s[k+1])13# <-> s[i] ^ s[k+1] == 0 <-> s[i] == s[k+1]1415res = 016# len(s) == n+1, 0<=i<=n-2, 1<=k<=n-1, i+1<=j<=k17for i in range(n - 1):18for k in range(i + 1, n):19if s[i] == s[k + 1]:20res += k - i21return res