分类
LeetCode刷题

LeetCode 第242题 Valid Anagram【排序】java

原题地址:https://leetcode.com/problems/valid-anagram/

题目:验证变位词

给定两个字符串,写个函数判断他们是否互为变位词(字母一样,顺序不同)。

例一

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

例二

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

这道题我们有三种解法:

第一种 排序解法

思路很简单,把两个字符串都转换成char数组,然后排序,然后一次循环一一比对即可,有不同的元素即为失败,只有都相同才是变位词。代码如下:

耗时8ms。

第二种解法 hashmap解法

这个思路也不复杂,就是用一个hashmap来保存两个char数组里每个元素出现的次数,在第一个数组增加计数,第二个数字减少计数,如果最后hashmap为空,则互为变位词。代码如下

耗时16ms。

第三种解法 数组解法

用一个256个元素的数组来保存统计信息,其他跟hashmap解法本质一样。代码如下:

耗时3 ms,比94.23%的Java提交快。

代码地址:https://github.com/tinyfool/leetcode/tree/master/src/p0242

其他排序相关题目,参照排序主题

本题属于哈希表类题目,想了解更多关于哈希表的题目,可以参看哈希表专题

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据