加载中...
242-有效的字母异位词(Valid Anagram)
发表于:2021-12-03 | 分类: 简单
字数统计: 183 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/valid-anagram

英文原文

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

 

Example 1:

Input: s = "anagram", t = "nagaram"
Output: true

Example 2:

Input: s = "rat", t = "car"
Output: false

 

Constraints:

  • 1 <= s.length, t.length <= 5 * 104
  • s and t consist of lowercase English letters.

 

Follow up: What if the inputs contain Unicode characters? How would you adapt your solution to such a case?

中文题目

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

注意:若 st 中每个字符出现的次数都相同,则称 st 互为字母异位词。

 

示例 1:

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

示例 2:

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

 

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • st 仅包含小写字母

 

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

通过代码

高赞题解

解题思路

  • 标签:哈希映射
  • 首先判断两个字符串长度是否相等,不相等则直接返回 false
  • 若相等,则初始化 26 个字母哈希表,遍历字符串 s 和 t
  • s 负责在对应位置增加,t 负责在对应位置减少
  • 如果哈希表的值都为 0,则二者是字母异位词

代码

[]
class Solution { public boolean isAnagram(String s, String t) { if(s.length() != t.length()) return false; int[] alpha = new int[26]; for(int i = 0; i< s.length(); i++) { alpha[s.charAt(i) - 'a'] ++; alpha[t.charAt(i) - 'a'] --; } for(int i=0;i<26;i++) if(alpha[i] != 0) return false; return true; } }

画解

<frame_00001.png,frame_00002.png,frame_00003.png,frame_00004.png,frame_00005.png,frame_00006.png,frame_00007.png,frame_00008.png,frame_00009.png,frame_00010.png>

想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:《画解剑指 Offer 》,O(∩_∩)O

统计信息

通过次数 提交次数 AC比率
319313 493745 64.7%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
字母异位词分组 中等
回文排列 简单
找到字符串中所有字母异位词 中等
上一篇:
241-为运算表达式设计优先级(Different Ways to Add Parentheses)
下一篇:
257-二叉树的所有路径(Binary Tree Paths)
本文目录
本文目录