剑指OfferII032.有效的变位词

题目

给定两个字符串 s 和 t ,编写一个函数来判断它们是不是一组变位词(字母异位词)。

注意:若 s 和 t 中每个字符出现的次数都相同且字符顺序不完全相同,则称 s 和 t 互为变位词(字母异位词)。

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

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

示例 3:输入: s = "a", t = "a" 输出: false

提示:1 <= s.length, t.length <= 5 * 104

s and t 仅包含小写字母

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

注意:本题与主站 242 题相似(字母异位词定义不同)

解题思路分析

1、哈希辅助;时间复杂度O(n),空间复杂度O(1)

剑指OfferII032.有效的变位词

func isAnagram(s string, t string) bool {
   if len(s) != len(t) || s == t {
      return false
   }

   sr := []rune(s)
   tr := []rune(t)

   rec := make(map[rune]int, len(sr))
   for i := range sr {
      rec[sr[i]]++
      rec[tr[i]]--
   }

   for _, n := range rec {
      if n != 0 {
         return false
      }
   }
   return true
}

2、排序比较;时间复杂度O(nlog(n)),空间复杂度O(n)

func isAnagram(s string, t string) bool {
   if len(s) != len(t) || s == t {
      return false
   }
   sArr := make([]int, len(s))
   tArr := make([]int, len(t))
   for i := 0; i < len(s); i++ {
      sArr[i] = int(s[i] - 'a')
      tArr[i] = int(t[i] - 'a')
   }
   sort.Ints(sArr)
   sort.Ints(tArr)
   for i := 0; i < len(s); i++ {
      if sArr[i] != tArr[i] {
         return false
      }
   }
   return true
}

总结

Easy题目,题目类似leetcode 242.有效的字母异位词

展开阅读全文

页面更新:2024-05-24

标签:进阶   本题   复杂度   解法   示例   字符串   字母   顺序   字符   题目   思路   类似   定义   时间   科技   空间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top