LeetCode205----同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s ="egg",t ="add"
输出: true
示例 2:
输入: s ="foo",t ="bar"
输出: false
示例 3:
输入: s ="paper",t ="title"
输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
思路:
我们拿"paperp"和"titlel"举例:
(1)首先我们会定义一个哈希表(Map)来完成一种一一对应的关系,第一次进来时我们把p和t对应
p <==> t
(2)这时我们继续判断下一个字符a和i,我们在哈希表中并没有找到以a为key的项,并且t作为value也并没有出现在其他项中,所以我们添加a t键值对
p <==> t a <==> i
(3)继续,我们又找到了p字符和t字符,我们可以在哈希表中找到以p为key的项,并且value是t,而我们此时遍历到的确实是t,代表匹配上了,继续下一个
(4)拿到e和l字符,哈希表没有以e为key的项,并且l也没有作为value出现在其他项内,所以添加键值对
p <==> t a <==> i e <==> l
(5)继续拿到r和e字符串,哈希表内没有找到以r为key的项,并且e没有作为value出现在其他项内,所以添加键值对
p <==> t a <==> i e <==> l r <==> e
(6)继续拿到p和l,这时要注意,我们可以在哈希表内找到以p为key的项,并且该项的value不是l !!所以这时没有匹配上,整段垮掉,返回false
代码如下:
public class LeetCode205 {
public static boolean isIsomorphic(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] ss = s.toCharArray();
char[] tt = t.toCharArray();
Map<Character, Character> map = new HashMap<>();
for (int sIndex = 0, tIndex = 0; tIndex < tt.length; tIndex++, sIndex++) {
if (!map.containsKey(ss[sIndex])) {
if (!map.containsValue(tt[tIndex])) {
map.put(ss[sIndex], tt[tIndex]);
} else {
return false;
}
}
if (!map.get(ss[sIndex]).equals(tt[tIndex])) {
return false;
}
continue;
}
return true;
}
}
LeetCode205----同构字符串的更多相关文章
- [Swift]LeetCode205. 同构字符串 | Isomorphic Strings
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- [LeetCode] Isomorphic Strings 同构字符串
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- LeetCode 205:同构字符串 Isomorphic Strings
题目: 给定两个字符串 s 和 *t*,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 *t* ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字 ...
- LeetCode 205. 同构字符串(Isomorphic Strings)
205. 同构字符串 205. Isomorphic Strings
- Java实现 LeetCode 205 同构字符串
205. 同构字符串 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序. ...
- 【leetcode 简单】 第五十九题 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...
- LeetCode OJ:Isomorphic Strings(同构字符串)
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- Q205 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...
- 205 Isomorphic Strings 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的.如果 s 中的字符可以被替换最终变成 t ,则两个字符串是同构的.所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一个字 ...
- leetcode.字符串.205同构字符串-Java
1. 具体题目 给定两个字符串 s 和 t,判断它们是否是同构的.如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的.所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不 ...
随机推荐
- gitlab 搭建
一.ubuntu搭建gitlab 1. 如果以前有安装过gitlab请根据以下步骤来删除 https://www.cnblogs.com/shansongxian/p/6678110.htm ...
- 学习前端 第一天之html标签补充
一.常用浏览器内核 Trident(IE内核) Gecko(firefox) webkit(Safari) Chromium/Blink(chrome) Blink(Opera) 二.常见标签回顾 a ...
- Apache httpclient的execute方法调试
因为工作需要,想研究一下execute执行的逻辑. 在这一行调用execute: response = getHttpClient().execute(get); getHttpClient的实现: ...
- Mac下安装Redis及Redis Desktop Manager
1.简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表 ...
- spring 通用mapper的一些注解
1.1@Table 注解 注解作用:建立实体类和数据库表之间的对应关系.默认规则:实体类类名首字母小写作为表名.Employee 类→employee 表. 用法:在@Table 注解的 name 属 ...
- 利用commands模块执行shell命令
利用commands模块执行shell命令 用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态 ...
- 09_Redis_消息订阅与发布
一:Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 c ...
- java—多线程—notify/notifyAll
notify应该使用在,只有两个线程在调用类中的两个方法,并在两个方法中进行互斥操作? 博客:Java多线程学习之wait.notify/notifyAll 详解 未完待续……
- 牛客CSP-S提高组赛前集训营3
A 货物收集 显然是一个二分答案的题. #include<iostream> #include<cstdio> #include<cstring> #include ...
- UOJ117 欧拉回路[欧拉回路]
找欧拉回路的模板题. 知识点详见图连通性学习笔记. 注意一些写法上的问题. line37&line61:因为引用,所以j和head值是同步更新的,类似于网络流的当前弧优化,除了优化枚举外,这样 ...