如何使用 C# 检查给定的字符串是否同构?


如果字符串 X 中每个字符的所有出现都可以用另一个字符替换来获取 Y,并且反之亦然,则称两个字符串 X 和 Y 是同构的。例如,考虑字符串 ACAB 和 XCXY。必须用另一个字符替换字符的所有出现,同时保持字符的顺序。不得将两个字符映射到同一个字符,但一个字符可以映射到自身。

示例 1

输入 − s = "egg", t = "add"

输出 − true

示例 2

输入 − s = "foo", t = "bar"

输出 − false

时间复杂度 − 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

更新日期: 17-8-2021

809 次查看

开启 职业

完成课程以获得认证

开始
广告
© . All rights reserved.