题目地址(242. 有效的字母异位词)

https://leetcode-cn.com/problems/valid-anagram/

题目描述

  1. 给定两个字符串 s t ,编写一个函数来判断 t 是否是 s 的字母异位词。
  2. 注意:若 s t 中每个字符出现的次数都相同,则称 s t 互为字母异位词。
  3. 示例 1:
  4. 输入: s = "anagram", t = "nagaram"
  5. 输出: true
  6. 示例 2:
  7. 输入: s = "rat", t = "car"
  8. 输出: false
  9. 提示:
  10. 1 <= s.length, t.length <= 5 * 104
  11. s t 仅包含小写字母
  12. 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

前置知识

  • 哈希表

公司

  • 暂无

思路

008eGmZEly1govxyg83bng30ds09ob29.gif
定义一个长度为26的数组
循环给定的字符串 如果出现字符 就将它++ 另一个字符串出现字符就— 最后判断数组的值 如果有!=0的就说明有不相同的字母了

关键点

  • string.toCharArray可以将字符串转换成char型数组
  • record的第0个位置存储的是a record[‘a’-‘a’] 以此类推

代码

  • 语言支持:Java

Java Code:

  1. class Solution {
  2. public boolean isAnagram(String s, String t) {
  3. int[] record = new int[26];
  4. for (char c : s.toCharArray()) {
  5. record[c-'a'] +=1;
  6. }
  7. for (char c : t.toCharArray()) {
  8. [c-'a'] -=1;
  9. }
  10. for (int i : record) {
  11. if (i != 0) {
  12. return false;
  13. }
  14. }
  15. return true;
  16. }
  17. }

复杂度分析

令 n 为数组长度。

  • 时间复杂度:242. 有效的字母异位词 - 图2#card=math&code=O%28n%29&id=Q0F5q)
  • 空间复杂度:242. 有效的字母异位词 - 图3#card=math&code=O%281%29&id=FUMcM)