如果 X 中每个字符的所有出现都可以用另一个字符替换以获得 Y,则两个字符串 X 和 Y 被称为同构,反之亦然。例如,考虑字符串 ACAB 和 XCXY。所有出现的字符都必须替换为另一个字符,同时保留字符的顺序。没有两个字符可以映射到同一个字符,但一个字符可以映射到它自己。
输入 - s = "egg", t = "add"
输出 - 真
输入 - s = "foo", t = "bar"
输出 - 假
时间复杂度-O(N)
空间复杂度-O(N)
public class Arrays{ public bool IsStringIsomorphic(string s, string t){ if (s == null || t == null){ return false; } int[] chars1 = new int[128]; int[] chars2 = new int[128]; for (int i = 0; i < s.Length; i++){ if (chars1[s[i]] != chars2[t[i]]){ return false; } else{ chars1[s[i]] = i + 1; chars2[t[i]] = i + 1; } } return true; } } static void Main(string[] args){ Console.WriteLine(s.IsStringIsomorphic("add", "egg")); }输出结果
True