总的来说,思路还是很清晰的。
一看到这个题就想到了图,==
构成的是连通关系,只要有连通关系,就可以构造图来解决问题。而解决图的问题,比较常见的思路的就是BFS(或者DFS)和并查集,这个题感觉用BFS和BFS有点麻烦,那就用并查集了:
function equationsPossible(equations: string[]): boolean {
const parent: number[] = [];
for (let i = 0; i < 26; ++i) {
parent.push(i);
}
function find(i: number) {
while (i !== parent[i]) {
i = parent[i];
}
return i;
}
function union(a: number, b: number) {
parent[find(a)] = find(b);
}
for (const equation of equations) {
if (equation[1] === "=") {
let leftId = equation[0].charCodeAt(0) - 0x61,
rightId = equation[3].charCodeAt(0)