题目地址(242. 有效的字母异位词)
https://leetcode-cn.com/problems/valid-anagram/
题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false提示:1 <= s.length, t.length <= 5 * 104s 和 t 仅包含小写字母进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
前置知识
- 哈希表
公司
- 暂无
思路

定义一个长度为26的数组
循环给定的字符串 如果出现字符 就将它++ 另一个字符串出现字符就— 最后判断数组的值 如果有!=0的就说明有不相同的字母了
关键点
- string.toCharArray可以将字符串转换成char型数组
- record的第0个位置存储的是a record[‘a’-‘a’] 以此类推
代码
- 语言支持:Java
Java Code:
class Solution {public boolean isAnagram(String s, String t) {int[] record = new int[26];for (char c : s.toCharArray()) {record[c-'a'] +=1;}for (char c : t.toCharArray()) {[c-'a'] -=1;}for (int i : record) {if (i != 0) {return false;}}return true;}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=Q0F5q)
- 空间复杂度:
#card=math&code=O%281%29&id=FUMcM)
