LeetCode/com/zerroi/leetcode/Three18/IsIsomorphic.java

53 lines
1.7 KiB
Java
Raw Normal View History

2024-03-21 19:03:41 +08:00
package com.zerroi.leetcode.Three18;
import java.util.HashMap;
import java.util.Map;
public class IsIsomorphic {
public static void main(String[] args) {
SolutionSecond solutionSecond = new SolutionSecond();
boolean res = solutionSecond.isIsomorphic("badc", "baba");
System.out.println("res = " + res);
}
}
/*给定两个字符串 s t 判断它们是否是同构的
如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的
每个出现的字符都应当映射到另一个字符同时不改变字符的顺序不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身*/
class SolutionSecond {
public boolean isIsomorphic(String s, String t) {
if (s.length() != t.length()) return false;
Map<Character, Character> sToT = new HashMap<>();
Map<Character, Character> tToS = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char charS = s.charAt(i);
char charT = t.charAt(i);
// Check s to t mapping
if (sToT.containsKey(charS)) {
if (sToT.get(charS) != charT) {
return false; // Conflict in mapping
}
} else {
sToT.put(charS, charT);
}
// Check t to s mapping
if (tToS.containsKey(charT)) {
if (tToS.get(charT) != charS) {
return false; // Conflict in mapping
}
} else {
tToS.put(charT, charS);
}
}
return true;
}
}