242.有效的字母异位词

一、题目描述

给定两个字符串 st ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:

1
2
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

1
2
输入: s = "rat", t = "car"
输出: false

说明:
你可以假设字符串只包含小写字母。

进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

二、题解

1.Hash表

1.1 思路

将两个字符串分别映射到两个Hash表中,然后对比两个Hash表即可

1.2 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool isAnagram(char *s, char *t)
{
int arr1[26];
int arr2[26];
for (int i = 0; i < 26; i++)
{
arr1[i] = 0;
arr2[i] = 0;
}

for (int i = 0; i < strlen(s); i++)
arr1[s[i] - 'a']++;
for (int i = 0; i < strlen(t); i++)
arr2[t[i] - 'a']++;
for (int i = 0; i < 26; i++)
if (arr1[i] != arr2[i])
return false;
return true;
}

2.排序

2.1 思路

分别将两个字符串的字符进行内排序,然后逐位比较两个字符串