同构字符串

一、需求

  • 给定两个字符串 s 和 t,判断它们是否是同构的;

  • 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的;

  • 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

二、哈希表

2.1  思路分析

  1. 字符串同构的条件:①字符串 s 中的字符可以唯一映射到字符串 t ;②字符串 t 中的字符可以唯一映射到字符串 s;
  2. 利用Map结构中的键值对,键表示字符串 s 中的字符,值表示字符串 t 中的字符;
  3. 唯一映射的两种情况:①单个字符可以映射为其本身或其它字符;②多个相同字符映射为相同的字符;

2.2  代码实现

class Solution {
    public boolean isIsomorphic(String s, String t) {
        return helper(s, t) && helper(t, s);
    }
    //该方法判断s1能否唯一映射的s2
    public boolean helper(String s1, String s2) {
        Map hs = new HashMap<>();
        for(int i = 0; i < s1.length(); i++) {
            char c1 = s1.cha

你可能感兴趣的:(LeetCode,字符串,java,算法)