思路就是把相等的字母连通起来,再判断不等号是否会打破这个连通
def find_root(x):
while parent[x]!=x:
parent[x]=parent[parent[x]]##路径压缩,不要也可以
x=parent[x]
return x
def union(x,y):
x_root=find_root(x)
y_root=find_root(y)
if size[x_root]>size[y_root]:
parent[y_root]=x_root
elif size[y_root]<size[x_root]:
parent[x_root]=y_root
else:
parent[x_root]=y_root
def check_connect(x,y):
x_root=find_root(x)
y_root=find_root(y)
if x_root==y_root:
return 1
else:
return 0
parent=dict()
size=dict()
flag=0
for i in range(26):
m=chr(ord('a')+i)
parent[m]=m
size[m]=0
equations=['a==b','b==c','c==a','b==d','d==a']
for item in equations:
if item[1]=='=':
union(item[0],item[3])
for item in equations:
if item[1]=='!':
if check_connect(item[0],item[3]):
flag=1
print("False")
break
if flag==0:
print("True")