题目描述:

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

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

思路:

1、可以用排序,然后再进行比较是否相同。不过再这个之前,可以先判断两个字符串长度是否相同,如果不同,可以直接返回false。

public boolean isAnagram(String s, String t) {if (s.length() != t.length()) {return false;}char[] str1 = s.toCharArray();char[] str2 = t.toCharArray();Arrays.sort(str1);Arrays.sort(str2);return Arrays.equals(str1, str2);
}

2、哈希表。因为涉及到字母,都是只包含26个字母,可以创建一个大小为26的数组

然后进行分别计算S字符串中字母的频率和T字符串中字母的频率,S增加,T减少,最后,如果计数器为0,那么说明两个字符串是字母异位词

或者可以先用计数器计算S,然后用T减少每个字母,如果任何时候计数器低于0,就知道T包含一个不在S中的额外字母,就可以立即返回False

Java

class Solution {public boolean isAnagram(String s, String t) {//如果我们s和 t 的长度不一样,则立即返回falseif (s.length() != t.length()) {return false;}//只有26个字符大小int[] table = new int[26];//先用计数器表计算 s,然后用 t 减少计数器表中的每个字母的计数器。如果在任何时候计数器低于零,我们知道 t包含一个不在 s中的额外字母,并立即返回 FALSEfor (int i = 0; i < s.length(); i++) {table[s.charAt(i) - 'a']++;}for (int i = 0; i < t.length(); i++) {table[t.charAt(i) - 'a']--;if (table[t.charAt(i) - 'a'] < 0) {return false;}}return true;}
}

C 语言

bool isAnagram(char * s, char * t){if(strlen(s)!=strlen(t)) return false;int table[26]={};for(int i=0;i<strlen(s);++i){table[s[i]-'a']++;}for(int i=0;i<strlen(t);++t){table[t[i]-'a']--;if(table[t[i]-'a']<0) return false;}return true;
}

C++

class Solution {
public:bool isAnagram(string s, string t) {if(s.size()!=t.size()){return false;}int table[26]={};for(int i=0;i<s.size();++i){table[s[i]-'a']++;}for(int i=0;i<t.size();++i){table[t[i]-'a']--;if(table[t[i]-'a']<0){return false;}}return true;}
};

Python

直接调用使用内置模块collections中的Counter类

class Solution:def isAnagram(self, s: str, t: str) -> bool:return collections.Counter(s) == collections.Counter(t)

LeetCode-有效的字母异位词相关推荐

  1. LeetCode 1347. 制造字母异位词的最小步骤数

    1. 题目 给你两个长度相等的字符串 s 和 t.每一个步骤中,你可以选择将 t 中的 任一字符 替换为 另一个字符. 返回使 t 成为 s 的字母异位词的最小步骤数. 字母异位词 指字母相同,但排列 ...

  2. 【LeetCode】49.字母异位词分组 (三种解法开拓思路,java实现)

    49. 字母异位词分组 分析 方法一:排序数组分类 思路 当且仅当它们的排序字符串相等时,两个字符串是字母异位词. 算法 维护一个映射 ans : {String -> List},其中每个键 ...

  3. LeetCode||有效的字母异位词(排列)--给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

    原题链接:https://leetcode-cn.com/problems/valid-anagram 题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示 ...

  4. leetcode有效的字母异位词--哈希表与Counter(两种方法天差地别)

    水卡第n弹 话不多说,先展示以下我自己的写法 class Solution:def isAnagram(self, s: str, t: str) -> bool:s=collections.C ...

  5. leetCode C++ 49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

    一.思路: 对每一个字符串排序,然后将这个排序的字符串加到map里面,对于每一个新遍历的字符串就和map比较是否相等. 最开始用map,会出现超时,于是采用hash实现结构的unordered_map ...

  6. leetcode 有效的字母异位词

    34 / 34 个通过测试用例 状态:通过 执行用时:4 ms 内存消耗:37.3 MB class Solution {public boolean isAnagram(String s, Stri ...

  7. LeetCode简单题之有效的字母异位词

    题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 示例 1: 输入: s = ...

  8. LeetCode 49字母异位词分组50pow(x,n)51八皇后

    原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...

  9. LeetCode 2186. 使两字符串互为字母异位词的最少步骤数

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 s 和 t .在一步操作中,你可以给 s 或者 t 追加 任一字符 . 返回使 s 和 t 互为 字母异位词 所需的最少步骤数. 字母异位 ...

  10. LeetCode 438. 找到字符串中所有字母异位词(滑动窗口)

    1. 题目 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100 ...

最新文章

  1. 使用ajax实现多个查询条件功能以及下拉分页
  2. php多表数据排除,thinkphp中多表查询中防止数据重复的sql语句(必看)
  3. mybatis 代码生成器_spring Boot手把手教学(4): mybatis-plus 代码生成器,自动帮你生成代码
  4. python3高性能网络编程_Python3 网络编程
  5. Zabbix Server安装
  6. PyCharm 代码格式化工具:black
  7. 第二课 android项目结构
  8. CentOS6.5安装配置
  9. 收藏 | 深度学习之Numpy基础入门教程!
  10. 你以为环幕屏就结束了?真正的小米MIX 4或下月发布:1亿像素相机加持
  11. 虚拟环境使用自动化软件能够节省成本吗?
  12. 让Internet Explorer成为你的软件集成平台
  13. ARM开发6.3.2 基础实训( 2 ) 单个数码 LED 的显示输出系统设计( 2 )--LPC21XX
  14. 凤凰os linux双系统,逍遥安卓模拟器双系统无缝连接完胜Remix、凤凰OS
  15. Windows 批处理(bat)语法大全、BAT批处理基本命令总结
  16. 5G+北斗高精度定位系统适用于哪些行业领域?
  17. 在Mac上怎么使用Charles进行抓包
  18. 科学计算机可以用多久,科学家公布“寿命计算器” 算一下你能活多久?
  19. 动物大全和动物识别系统毕业设计,动物大全和动物AI识别系统设计与实现,动物识别系统论文毕设作品参考
  20. docker bind source path does not exist: /etc/timezone“

热门文章

  1. aix用户登录次数受限问题(3004-300 输入了无效的登录名或password)
  2. 使用Apache php 的一些基本操作(一)
  3. 四维空间引发-维度空间(0-10)来自我的教授的班长
  4. 思想实验(逻辑思维)解题
  5. 【并行计算-CUDA开发】显卡两大生产商
  6. Deeplearning入门篇(2)
  7. 5.6 图像颜色映射
  8. 二十万字C/C++、嵌入式软开面试题全集宝典九
  9. java多态替换switch_第1章 重构,第一个案例(3):运用多态取代switch
  10. [云炬创业学笔记]第一章创业是什么测试6