算法案例之有效字母异位词
本题参考力扣题解写的理解思路,原文请参照力扣官网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中没有出现那个位置对应的字母
算法案例之有效字母异位词相关推荐
- 算法训练Day6:有效的字母异位词, 两个数组的交集,快乐数,两数之和
文章目录 有效的字母异位词 自己题解 其他参考 两个数组的交集 题解(重点在熟悉set的一些操作以及使用场景) 快乐数 两数之和 题解(这道题还是比较难的) 有效的字母异位词 Category Dif ...
- 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)
目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...
- 代码随想录算法训练营第六天|242. 有效的字母异位词,349. 两个数组的交集,202.快乐数,1. 两数之和
242. 有效的字母异位词 力扣题目链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = ...
- 算法--------字母异位词分组 (Java 版本)
题目 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串.示例:输入: ["eat", "tea", &quo ...
- Leetcode算法题(C语言)16--有效的字母异位词
题目:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = " ...
- day6代码随想录算法训练营| ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
● 242.有效的字母异位词 用map的话效率应该会很低吧,特别是查询全部value class Solution { public:bool isAnagram(string s, string t ...
- C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4040 访问. 给定两个字符串 s 和 t ,编写一个函数来判断 ...
- 1.字母异位词分组(LeetCode第49题)
一.题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", " ...
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...
- 高频算法面试题(字符串) 242. 有效的字母异位词
leetcode 242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", ...
最新文章
- 无需写代码---建网站
- UT890D的二极管档的使用
- DM365 u-boot启动分析
- @transactional注解失效情况
- 发掘 CPU 与超级工厂的共性,程序员的心思你别猜
- java连接mysql时区修改_java连接mysql数据库时的时区设置问题(time_zone)
- 广播的接收与U盘广播
- 一页纸项目管理及模板下载
- 关于脏读,不可重复读,幻读的理解
- MT666数字程序测试
- 平面设计什么情况下会用到对比构图与调和构图
- 【bfs 反向建边】2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) Jumping
- 实现数字电视机顶盒画面的纯键盘和遥控操作网页
- C++ - 文件读写(fstream)
- 深富策略:传统蓝筹与成长股跷跷板效应明显
- GPS时钟源(GPS时间同步服务器)的概述
- App Inventor 四字节转单精度浮点数
- 反射练习- 改变private成员变量的值
- 小程序开发--- 1. 获取数组中某个字段的值或获取列表索引
- Eclipes 如何创建一个简单的servlet
热门文章
- python 代码分块_python大数据分块处理
- java语法特点_Java 语言特点
- 小蠓虫如何灭_小咬怎么灭
- Django:MySQL查询结果为datetime.date无法转换为JSON
- Java编程:贪心算法
- C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
- Cesium:去除原生自带右上角弹窗
- Summernote个性化定制使用帮助(二)
- crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
- 论文阅读-为什么深度卷积神经网络对小目标的变换泛化效果很差?