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

(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.dtcms.com/a/232583.html

相关文章:

  • 金融系统功能测试:科技赋能,安全护航
  • 【C++ Qt】窗口(Qt窗口框架、菜单栏QMenuBar)
  • bug 记录 - 使用 el-dialog 的 before-close 的坑
  • 2025Go面试八股(含100道答案)
  • 【Spark征服之路-2.2-安装部署Spark(二)】
  • 41道Django高频题整理(附答案背诵版)
  • 泊松融合的介绍和OpenCV教程
  • Kaggle-Predicting Optimal Fertilizers-(多分类+xgboost)
  • 数学运算在 OpenCV 中的核心作用与视觉效果演示
  • 【个人笔记】数据库原理(西电)
  • 半监督学习:低密度分离假设 (Low-Density Separation Assumption)
  • Devops系列---python基础篇二
  • STM32 智能小车项目 两路红外循迹模块原理与实战应用详解
  • 厂区能源监控系统:网关赋能下的高效能源管理与环保监测
  • 「Java EE开发指南」如何使用MyEclipse在Web项目中用Web Fragments?
  • 数学复习笔记 27
  • 基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等
  • 【Elasticsearch】Elasticsearch 核心技术(二):映射
  • DeepSeek 赋能智能养老:情感陪伴机器人的温暖革新
  • Python数据类型与运算符全解析-Python数据挖掘可视化分析
  • AI系统负载均衡与动态路由
  • bootstrap:点击回到顶部 超简单
  • halcon c# 自带examples报错 Matching
  • Dubbo Logback 远程调用携带traceid
  • Mybatis动态SQL语句
  • 学习路之php--性能优化
  • Redis 安装配置和性能优化
  • 解读《网络安全法》最新修订,把握网络安全新趋势
  • 【前端】vue3性能优化方案
  • 性能优化之SSR、SSG