leetcode-205 同构字符串
给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
输入:s = "egg", t = "add"
输出:true
示例 2:
输入:s = "foo", t = "bar"
输出:false
示例 3:
输入:s = "paper", t = "title"
输出:true
提示:
1 <= s.length <= 5 * 104
t.length == s.length
s 和 t 由任意有效的 ASCII 字符组成
实现:
func isIsomorphic(s string, t string) bool {
// 定义s、t的结构映射,kv格式均为rune
maps_s_to_t := make(map[rune] rune)
maps_t_to_s := make(map[rune] rune)
// 遍历字符串,因为是同构,所以可以共用索引
for i, sc := range s {
tc := rune(t[i])
// 如果字符在映射中存在,则检查映射值是否相等,不相等则返回false,全部都遍历完则返回true
if mc, ok := maps_s_to_t[sc]; ok {
if mc != tc {
return false
}
} else {
maps_s_to_t[sc] = tc
}
if mc, ok := maps_t_to_s[tc]; ok {
if mc != sc {
return false
}
} else {
maps_t_to_s[tc] = sc
}
}
return true
}
本文作者:505donkey
本文链接:https://www.cnblogs.com/505donkey/p/18455436
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步