class Union:
def __init__(self):
self.parnet = list(range(26))
@staticmethod
def c2n(char):
return ord(char) - 97
@staticmethod
def n2c(num):
return chr(num + 97)
def find(self, char):
num = self.c2n(char)
if self.parnet[num] == num:
return num
self.parnet[num] = self.find(self.n2c(self.parnet[num]))
return self.parnet[num]
def union(self, char1, char2):
self.parnet[self.find(char1)] = self.find(char2)
def connected(self, char1, char2):
return self.find(char1) == self.find(char2)
class Solution:
def equationsPossible(self, equations: List[str]) -> bool:
u = Union()
not_equal = []
for s in equations:
x, y, op = s[0], s[3], s[1]
if op == '=':
u.union(x, y)
else:
not_equal.append((x, y))
for x, y in not_equal:
if u.connected(x, y):
return False
return True