力扣205(java)-同构字符串(简单)
题目:
给定两个字符串 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 字符组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/isomorphic-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
把字符串s和字符串t都映射另一个集合中,这里可以映射成当前字符的下标+1,因为0为默认值,故将它的值设置成+1,最终将两个字符串所映射的字符串进行比较即可。
例如:
s = "egg"--->映射成122
t = "add"--->映射成122
两个字符串一样,即返回true。
s = "foo"--->映射成122
t = "bar"--->映射成123
两个字符串不一样,即返回false。
java代码:
解释:
int[] map = new int[128]
为什么设置成128:s 和 t 由任意有效的 ASCII 字符组成, ASCII 可以表示的字符个数是128个。
1 class Solution {
2 public boolean isIsomorphic(String s, String t) {
3 return isIsomorphicHelper(s).equals(isIsomorphicHelper(t));
4 }
5 public String isIsomorphicHelper(String s){
6 int[] map = new int[128];
7 StringBuilder sb = new StringBuilder();
8 int n = s.length();
9 //给每个字母编号
10 for(int i = 0; i < n; i++){
11 char c = s.charAt(i);
12 //如果当前字母未出现过,其值为下标+ 1
13 if(map[c] == 0){
14 map[c] = i + 1;
15 }
16 sb.append(map[c]);
17 }
18 return sb.toString();
19 }
20 }

力扣205(java)-同构字符串(简单)的更多相关文章
- LeetCode 205:同构字符串 Isomorphic Strings
题目: 给定两个字符串 s 和 *t*,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 *t* ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字 ...
- 力扣(LeetCode)字符串中的第一个唯一字符 个人题解
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...
- 手写Java的字符串简单匹配方法IndexOf()
简单的字符串模式匹配算法,可使用KMP进行优化 /** * @param s1 母串 * @param s2 子串 * @return */ public static int myIndexOf(S ...
- 力扣(LeetCode)字符串中的单词数 个人题解
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John" ...
- 力扣485. 最大连续1的个数-C语言实现-简单题
题目 [题目传送门] 给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3 ...
- Java实现 LeetCode 205 同构字符串
205. 同构字符串 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序. ...
- LeetCode 205. 同构字符串(Isomorphic Strings)
205. 同构字符串 205. Isomorphic Strings
- 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数
最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...
- Java的字符串操作一些简单的思考
Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...
- 力扣567.字符串的排列—C语言实现
题目 来源:力扣(LeetCode)
随机推荐
- vue-cli-service build 时间戳 方便查看bug发布时间和项目发布时间对比
vue.config.js let ret = '' const date = new Date() ret += date.getFullYear() ret += '-'+ (date.getMo ...
- pod常见的非故障及故障状态解析
在Kubernetes中,Pod的状态可以反映其当前的生命周期状态.是否正常运行或遇到了某些状况.以下是一些Pod常见的非故障状态: Running:这是Pod最常见的非故障状态,表示Pod已经成功调 ...
- ubuntu下安装numpy和scipy正确方法
1.numpy NumPy(Numeric Python)是用Python进行科学计算的基本软件包. NumPy是Python编程语言的扩展,增加了对大型多维数组和矩阵的支持,以及一个大型的高级数学函 ...
- 掌握python的dataclass,让你的代码更简洁优雅
dataclass是从Python3.7版本开始,作为标准库中的模块被引入.随着Python版本的不断更新,dataclass也逐步发展和完善,为Python开发者提供了更加便捷的数据类创建和管理方式 ...
- 实时云渲染技术_如何助力VR虚拟现实走向成熟?
近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题.相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019 ...
- UE虚幻引擎:生成云平台指定路径下的EXE文件
市面上大量优秀的游戏都是基于UE制作的,UE虚幻引擎制作的作品可以在windows.mac.linux以及ps4.x-boxone.ios.android甚至是html5等平台上运行.本文介绍了UE虚 ...
- 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)
这里,我们搭建的Harbor仓库的地址为 http://192.168.175.101:1180. 报错信息如下所示. [root@binghe101 ~]# docker login 192.168 ...
- Linux C++ 连接 MySQL
安装MySQL 可以参考这篇文章<在Ubuntu上安装MySQL> 连接 具体可以看官方的MySQL参考手册 示例代码 #include<iostream> #include& ...
- 18 JavaScript中的三元运算
18 JavaScript中的三元运算 先来看一个例子: let a = 10; let b = 20; let d = a > b? a: b console.log(d); // 20 三元 ...
- #并查集,单调栈#美团2018年CodeM大赛-决赛 C-Traffic
题目 分析 首先如果枚举起点\(i\),点\(i\)到点\(j\)(i<j)的距离跳到点\(k\)(k<i)一定不优,所以可以先处理这种情况, 用单调栈维护\(dp\)单调递增,并且如果栈 ...