首页 > 编程语言 >力扣205(java)-同构字符串(简单)

力扣205(java)-同构字符串(简单)

时间:2022-10-03 22:56:37浏览次数:61  
标签:字符 205 映射 map int 力扣 128 字符串 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,映射,map,int,力扣,128,字符串,java
From: https://www.cnblogs.com/liu-myu/p/16751504.html

相关文章

  • 程序、进程和线程 Java多线程的状态【杭州多测师】【杭州多测师_王sir】
    CPU是以时间片的方式为进程分配CUP处理时间的,如果当一个进程同时要完成几件事的时候,如当从网上下载文件的时候,需要一边下载一边显示进度而且还要一边保存,如果按照单线程的......
  • java网络编程--4 UDP
    java网络编程--4UDP1.7、UDP发短信:不用连接,但是需要知道对方的地址主要包含两个类:DatagramPacket和DatagramSocket发送消息发送端:packagecom.ssl.lesson03;im......
  • Java学习之:静态初始化块、包、参数传递机制
    关键字static和静态初始化块static普通变量和方法从属于对象,而static修饰的成员变量和方法从属于类。静态方法:被static修饰的方法叫做静态方法,又被称为类方法。非static的方......
  • Java对象序列化和反序列化
    Java类的序列化和反序列化序列化:指将对象转换为字节序列的过程,也就是将对象的信息转换成文件保存。反序列化:将字节序列转换成目标对象的过程,也就是读取文件,并转换为对象。几......
  • Java项目打成镜像
    前言官方只有java8的docker镜像,如果我们的项目使用java11开发的,那么用java8的镜像打包运行会报错那么我们部署java项目有两种方式如:1.将项目打成war包部署到tomcat容器,2.自......
  • Java中Map.Entry
    Map<String,String>map=newHashMap<String,String>();map.put("1","value1");map.put("2","value2");map.put("3","value3");遍历map方式1:Ma......
  • java BIO
    packageIO;//文件、数组、管道、基本数据类型、缓冲、打印、对象序列化/反序列化,以及转换等​importjava.io.*;​/***操作文件{*  1.文件字节流:FileInpu......
  • JAVA学习前准备
    电脑常用快捷键Ctrl+C:复制Ctrl+V:粘贴Ctrl+A:全选Ctrl+X:剪切Ctrl+Z:撤销Ctrl+S:保存Alt+F4:关闭窗口Shift+delete:永久性删除文件win键+R:打开运行win键+E:打......
  • java工厂方法模式学习
    总结;定义一个接口,多个实现类,一个工厂方法publicinterfaceHuman{voideat();voidsleep();}publicclassWhiteHumanimplementsHuman{@Overr......
  • java---回顾方法的定义和调用
    方法的回顾和调用packagecom.oop.demo;​importjava.io.IOError;importjava.io.IOException;​//return代表方法结束,返回一个结果//下方就是一个类publicclassDemo01......