Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การตรวจสอบว่าสตริงสองสตริงเป็น Isomorphic หรือไม่ใน C#


สตริงสองสตริง X และ Y เรียกว่า Isomorphic หากทุกครั้งที่ตัวอักษรใน X ปรากฏ สามารถแทนที่ด้วยอีกตัวอักษรหนึ่งเพื่อให้ได้ Y และในทางกลับกัน เช่น ACAB และ XCXY ตัวอักษรทุกตัวต้องแทนที่ด้วยอีกตัวหนึ่งโดยรักษาลำดับ ไม่มีตัวอักษรสองตัว map ไปตัวเดียวกัน แต่องตัวอักษรอาจ map ไปตัวเองได้

ตัวอย่าง 1

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

Output: true

ตัวอย่าง 2

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

Output: false

Time Complexity: O(N)

Space Complexity: 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)
{
    Arrays s = new Arrays();
    Console.WriteLine(s.IsStringIsomorphic("add", "egg"));
}

ผลลัพธ์

True