如何使用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP