本题参考力扣题解写的理解思路,原文请参照力扣官网242题
https://leetcode-cn.com/problems/valid-anagram/
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

法一:
Arrays工具类的使用

class Solution {public boolean isAnagram(String s, String t) {//也就是说判断S中出现的字母,是不是t的字符串,顺序不一样而已if(s.length()!=t.length()){return false;}char[] str1 = s.toCharArray();char[] str2 = t.toCharArray();Arrays.sort(str1);Arrays.sort(str2);boolean flag = Arrays.equals(str1,str2);return flag;}
}

这个工具类的使用就是先把字符串全部转换,赋值复制一组副本到新的字符数组中,再利用我们的Arrays类中的排序方法,让这个字符数组进行排序,最后在进行比较看看对应位置上的字符是不是一样的。

方法二:
哈希表

public class IsAnagram {public static boolean isAnagram(String s, String t) {if (s.length() != t.length()) {return false;}int[] table = new int[26];for (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;}public static void main(String[] args) {String s = "anagram";String t ="nagaram";System.out.println(isAnagram(s, t));}
}

这个方法的意思就是,我们创建一个哈希表table,里面代表着26个英文字母,我们s中一个字母出现一次,我们就在相应的位置+1,反过来t就是减一,出现负数,那就说明,a中没有出现那个位置对应的字母

算法案例之有效字母异位词相关推荐

  1. 算法训练Day6:有效的字母异位词, 两个数组的交集,快乐数,两数之和

    文章目录 有效的字母异位词 自己题解 其他参考 两个数组的交集 题解(重点在熟悉set的一些操作以及使用场景) 快乐数 两数之和 题解(这道题还是比较难的) 有效的字母异位词 Category Dif ...

  2. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  3. 代码随想录算法训练营第六天|242. 有效的字母异位词,349. 两个数组的交集,202.快乐数,1. 两数之和

    242. 有效的字母异位词 力扣题目链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = ...

  4. 算法--------字母异位词分组 (Java 版本)

    题目 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串.示例:输入: ["eat", "tea", &quo ...

  5. Leetcode算法题(C语言)16--有效的字母异位词

    题目:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = " ...

  6. day6代码随想录算法训练营| ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

    ● 242.有效的字母异位词 用map的话效率应该会很低吧,特别是查询全部value class Solution { public:bool isAnagram(string s, string t ...

  7. C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4040 访问. 给定两个字符串 s 和 t ,编写一个函数来判断 ...

  8. 1.字母异位词分组(LeetCode第49题)

    一.题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", " ...

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

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

  10. 高频算法面试题(字符串) 242. 有效的字母异位词

    leetcode 242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", ...

最新文章

  1. 无需写代码---建网站
  2. UT890D的二极管档的使用
  3. DM365 u-boot启动分析
  4. @transactional注解失效情况
  5. 发掘 CPU 与超级工厂的共性,程序员的心思你别猜
  6. java连接mysql时区修改_java连接mysql数据库时的时区设置问题(time_zone)
  7. 广播的接收与U盘广播
  8. 一页纸项目管理及模板下载
  9. 关于脏读,不可重复读,幻读的理解
  10. MT666数字程序测试
  11. 平面设计什么情况下会用到对比构图与调和构图
  12. 【bfs 反向建边】2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) Jumping
  13. 实现数字电视机顶盒画面的纯键盘和遥控操作网页
  14. C++ - 文件读写(fstream)
  15. 深富策略:传统蓝筹与成长股跷跷板效应明显
  16. GPS时钟源(GPS时间同步服务器)的概述
  17. App Inventor 四字节转单精度浮点数
  18. 反射练习- 改变private成员变量的值
  19. 小程序开发--- 1. 获取数组中某个字段的值或获取列表索引
  20. Eclipes 如何创建一个简单的servlet

热门文章

  1. python 代码分块_python大数据分块处理
  2. java语法特点_Java 语言特点
  3. 小蠓虫如何灭_小咬怎么灭
  4. Django:MySQL查询结果为datetime.date无法转换为JSON
  5. Java编程:贪心算法
  6. C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
  7. Cesium:去除原生自带右上角弹窗
  8. Summernote个性化定制使用帮助(二)
  9. crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
  10. 论文阅读-为什么深度卷积神经网络对小目标的变换泛化效果很差?