原题地址: https://leetcode.com/problems/valid-anagram/
给定两个字符串,写个函数判断他们是否互为变位词(字母一样,顺序不同)。
例一
<strong>输入:</strong> <em>s</em> = "anagram", <em>t</em> = "nagaram" <strong>输出:</strong> true
例二
<strong>输入:</strong> <em>s</em> = "rat", <em>t</em> = "car" <strong>输出: </strong>false
这道题我们有三种解法:
思路很简单,把两个字符串都转换成char数组,然后排序,然后一次循环一一比对即可,有不同的元素即为失败,只有都相同才是变位词。代码如下:
耗时8ms。
这个思路也不复杂,就是用一个hashmap来保存两个char数组里每个元素出现的次数,在第一个数组增加计数,第二个数字减少计数,如果最后hashmap为空,则互为变位词。代码如下
耗时16ms。
用一个256个元素的数组来保存统计信息,其他跟hashmap解法本质一样。代码如下:
耗时3 ms,比94.23%的Java提交快。
代码地址: https://github.com/tinyfool/leetcode/tree/master/src/p0242
其他排序相关题目,参照排序主题。