算法题 |
---|
算法题 |
---|
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例1:
输入: s = "anagram", t = "nagaram"
输出: true
示例2:
输入: s = "rat", t = "car"
输出: false
提示:
对比下标数组是否一致,用于检测两字符串同构。
代码:
public class Solution {
public bool IsIsomorphic(string s, string t)
{
List<int> indexS = new List<int>();
List<int> indexT = new List<int>();
for (int i = 0; i < s.Length; i++)
indexS.Add(s.IndexOf(s[i]));
for (int j = 0; j < t.Length; j++)
indexT.Add(t.IndexOf(t[j]));
return indexS.SequenceEqual(indexT);
}
}
执行结果
通过
执行用时:72 ms,在所有 Java 提交中击败了82.28%的用户
内存消耗:39 MB,在所有 Java 提交中击败了7.60%的用户
思路解析
代码:
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
执行结果
通过
执行用时:3 ms,在所有 Java 提交中击败了74.73%的用户
内存消耗:38.5 MB,在所有 Java 提交中击败了67.34%的用户
复杂度分析
时间复杂度:O( nlogn )
空间复杂度:O( long n )
思路解析
代码:
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
执行结果
通过
执行用时:4 ms,在所有 Java 提交中击败了45.11%的用户
内存消耗:38.5 MB,在所有 Java 提交中击败了73.10%的用户
复杂度分析
时间复杂度:O( nlogn )
空间复杂度:O( long n )
C#
和 Java
两种编程语言进行解题