原题地址: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
其他排序相关题目,参照排序主题。
本题属于哈希表类题目,想了解更多关于哈希表的题目,可以参看哈希表专题。