990. 等式方程的可满足性
给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。
只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/satisfiability-of-equality-equations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean equationsPossible(String[] equations) {
UnionSet unionSet = new UnionSet();
for (String equation : equations) {
char a = equation.charAt(0);
char b = equation.charAt(3);
boolean equal = equation.charAt(1) == '=';
if (equal) {
unionSet.merge(a, b);
}
}
for (String equation : equations) {
char a = equation.charAt(0);
char b = equation.charAt(3);
boolean equal = equation.charAt(1) == '=';
if (!equal) {
if (unionSet.find(a) == unionSet.find(b)) {
return false;
}
}
}
return true;
}
}
class UnionSet {
private Map<Character, Character> parentMap = new HashMap<Character, Character>() {{
for (int i = 0; i < 26; ++i) {
char c = (char) (i + 'a');
put(c, c);
}
}};
public Character find(char x) {
Character parent = this.parentMap.get(x);
if (parent == x) {
return parent;
}
parent = find(parent);
parentMap.put(x, parent);
return parent;
}
public void merge(char a, char b) {
char p1 = find(a);
char p2 = find(b);
if (p1 != p2) {
parentMap.put(p1, p2);
}
}
}
心之所向,素履以往 生如逆旅,一苇以航
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了