Две строки s и t изоморфны, если символы s можно заменить так, чтобы
получилась t: каждое вхождение символа заменяется одним и тем же символом,
и два разных символа не могут перейти в один и тот же. Символ может перейти сам
в себя. (LeetCode 205 Isomorphic Strings.)
// IsIsomorphic сообщает, изоморфны ли s и t.
func IsIsomorphic(s, t string) bool
Примеры
"egg", "add" → true // e→a, g→d
"foo", "bar" → false // o должна перейти и в a, и в r
"badc", "baba" → false // b→b и d→b: два символа в один
"paper", "title" → true
Ограничения
0 ≤ len(s), len(t) ≤ 10⁶. Строки в UTF-8, символ — это руна. Строки с
разным числом рун не изоморфны.
- Ожидается O(n) по времени.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.