Alien Dictionary
Problem Link: https://practice.geeksforgeeks.org/problems/alien-dictionary/1
from collections import defaultdict
class Solution:
def findOrder(self,dict, n, k):
# code here
# Create adjacency matrix
adj=defaultdict(list)
for i in range(n-1):
s1=dict[i]
s2=dict[i+1]
l=min(len(s1),len(s2))
for j in range(l):
if(s1[j]!=s2[j]):
adj[ord(s1[j])-ord('a')].append(ord(s2[j])-ord('a'))
break
indegree=[0 for i in range(k)]
for i in adj:
for j in adj[i]:
indegree[j]+=1
q=[]
for i in range(k):
if(indegree[i]==0):
q.insert(0,i)
ans=[]
while(q):
for _ in range(len(q)):
node=q.pop()
ans.append(node)
for i in adj[node]:
indegree[i]-=1
if(indegree[i]==0):
q.insert(0,i)
s=""
for i in ans:
s=s+chr(i+ord('a'))
return s
Last updated