Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Cách kiểm tra hai chuỗi có đồng构 (isomorphic) trong C#

Hai chuỗi X và Y gọi là đồng cấu nếu tất cả lần xuất hiện của mỗi ký tự trong X có thể thay bằng ký tự khác để được Y và ngược lại. Thứ tự ký tự phải giữ nguyên. Không hai ký tự nào ánh xạ tới cùng một ký tự, nhưng ký tự có thể ánh xạ tới chính nó.

Ví dụ 1

Input: s = "egg", t = "add"

Output: true

Ví dụ 2

Input: s = "foo", t = "bar"

Output: false

Độ phức tạp thời gian: O(N)

Độ phức tạp không gian: O(N)

Code

public class Arrays
{
    public bool IsStringIsomorphic(string s, string t)
    {
        if (s == null || t == null || s.Length != t.Length)
        {
            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)
{
    Arrays s = new Arrays();
    Console.WriteLine(s.IsStringIsomorphic("add", "egg")); // Output: True
}

Kết quả đầu ra

True

Lưu ý: Đã bổ sung kiểm tra s.Length != t.Length để tránh lỗi logic.