当前位置: 首页 > ai >正文

(LeetCode 每日一题) 1061. 按字典序排列最小的等效字符串 (并查集)

题目:1061. 按字典序排列最小的等效字符串

在这里插入图片描述
在这里插入图片描述

思路:使用并查集,来将等价的字符连起来,形成一棵树。这棵树最小的字母,就代表整颗树,时间复杂度0(n),细节看注释。
C++版本:

class Solution {
public:// 并查集int findd(int u,vector<int> &p){if(p[u]!=u) p[u]=findd(p[u],p);return p[u];}string smallestEquivalentString(string s1, string s2, string baseStr) {// 构建并查集的函数vector<int> p(26);for(int i=0;i<26;i++){p[i]=i;}// 合并等价字母for(int i=0;i<s1.size();i++){int a=findd(s1[i]-'a',p);int b=findd(s2[i]-'a',p);//选最小的字母作为根节点if(a>b) swap(a,b);p[b]=a; }// 答案string tmp="";for(int i=0;i<baseStr.size();i++){// 找到最小的字母下标int a=findd(baseStr[i]-'a',p);tmp.push_back(a+'a');}return tmp;}
};

JAVA版本:

class Solution {int findd(int u,int[] p){if(p[u]!=u) p[u]=findd(p[u],p);return p[u];}public String smallestEquivalentString(String s1, String s2, String baseStr) {int[] p=new int[26];for(int i=0;i<26;i++){p[i]=i;}for(int i=0;i<s1.length();i++){int a=findd(s1.charAt(i)-'a',p);int b=findd(s2.charAt(i)-'a',p);if(a>b){int t=b;b=a;a=t;}p[b]=a;}char[] s=baseStr.toCharArray();for(int i=0;i<s.length;i++){s[i]=(char)(findd(s[i]-'a',p)+'a');}return new String(s);}
}

Go版本:

func smallestEquivalentString(s1 string, s2 string, baseStr string) string {p:=make([]int,26)for i:=0;i<26;i++ {p[i]=i}for i:=0;i<len(s1);i++ {a:=findd(int(s1[i]-'a'),p)b:=findd(int(s2[i]-'a'),p)if a>b {t:=bb=aa=t}p[b]=a}s:=make([]byte,len(baseStr))for i:=0;i<len(baseStr);i++ {s[i]=byte(findd(int(baseStr[i]-'a'),p)+'a')}return string(s)
}
func findd(u int, p []int) int {if p[u]!=u {p[u]=findd(p[u],p)}return p[u]
}
http://www.xdnf.cn/news/12147.html

相关文章:

  • 双空间知识蒸馏用于大语言模型
  • Android 本地存储路径说明
  • 创客匠人解密创始人IP打造:知识变现的三大核心逻辑
  • 编程笔记---问题小计
  • 玄机——Linux等保测评
  • 游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
  • 山东大学深度学习期末概念汇总
  • 音视频之视频压缩编码的基本原理
  • StoreView SQL,让数据分析不受地域限制
  • Java八股文——集合「Map篇」
  • Agentic AI 和 Agent AI 到底区别在哪里?
  • 华为云CentOS配置在线yum源,连接公网后,逐步复制粘贴,看好自己对应的版本即可,【新手必看】
  • [蓝桥杯]螺旋矩阵
  • KMP算法:如何通过 next 数组推导模式串该从哪里继续匹配
  • Vue3解决“找不到模块@/components/xxx.vue或其相应的类型声明ts文件(2307)”
  • 华为云Flexus+DeepSeek征文| 华为云Flexus X实例单机部署Dify-LLM应用开发平台全流程指南
  • Vue ②-computed || watch || 指令
  • oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
  • deepseek-r1-0528-qwen3-8b本地部署:Ollama老版本大升级至0.9.0
  • Three.js光与影代码分析及原理阐述
  • C++STL-sting类的模拟实现
  • nginx.conf配置详解:从(413 Request Entity Too Large)说起
  • Scrum基础知识以及Scrum和传统瀑布式开发的区别
  • 计算机磁盘旁黄色警示标志消除|BitLocker关闭方法
  • <论文>(微软)WINA:用于加速大语言模型推理的权重感知神经元激活
  • 众趣科技与我爱我家达成战略合作:AI空间计算技术赋能重塑房产服务新范式
  • 服务器安装软件失败或缺依赖怎么办?
  • 使用vue3+ts+input封装上传组件,上传文件显示文件图标
  • 【试卷篇】Spring面试试卷题
  • POP3、IMAP、SMTP:三大邮件协议核心差异与应用场景解析