Skip to content

Instantly share code, notes, and snippets.

@BerkeSoysal
Created October 15, 2022 10:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BerkeSoysal/659a63130599a47b23ad1f200a6d9f6f to your computer and use it in GitHub Desktop.
Save BerkeSoysal/659a63130599a47b23ad1f200a6d9f6f to your computer and use it in GitHub Desktop.
class Solution {
public boolean equationsPossible(String[] equations) {
HashMap<Character, ArrayList<Character>> equalGraph = new HashMap<>();
for(String equation: equations)
{
if(equation.charAt(1)=='=')
{
Character var1 = equation.charAt(0);
Character var2 = equation.charAt(3);
if(var1.equals(var2))
{
continue;
}
if(!equalGraph.containsKey(var1))
{
equalGraph.put(var1, new ArrayList<>());
}
List<Character> edges = equalGraph.get(var1);
edges.add(var2);
if(!equalGraph.containsKey(var2))
{
equalGraph.put(var2, new ArrayList<>());
}
List<Character> edges2 = equalGraph.get(var2);
edges2.add(var1);
}
}
for(String equation: equations)
{
if(equation.charAt(1)=='!')
{
char var1 = equation.charAt(0);
char var2 = equation.charAt(3);
if(var1 == var2) return false;
if(!equalGraph.containsKey(var1) || !equalGraph.containsKey(var2))
{
continue;
}
//BFS
boolean[] visited= new boolean[26];
visited[var1-'a'] = true;
ArrayDeque<Character> queue = new ArrayDeque<>();
queue.add(var1);
while(!queue.isEmpty())
{
char iter = queue.poll();
visited[iter-'a'] = true;
ArrayList<Character> list = equalGraph.get(iter);
for(Character ch: list)
{
if(ch.equals(var2))
{
return false;
}
if(!visited[ch-'a'])
{
queue.add(ch);
}
}
}
}
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment