转载

LeetCode 第242题 Valid Anagram【排序】java

原题地址: 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数组,然后排序,然后一次循环一一比对即可,有不同的元素即为失败,只有都相同才是变位词。代码如下:

LeetCode 第242题 Valid Anagram【排序】java

耗时8ms。

第二种解法 hashmap解法

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

LeetCode 第242题 Valid Anagram【排序】java

耗时16ms。

第三种解法 数组解法

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

LeetCode 第242题 Valid Anagram【排序】java

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

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

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

原文  http://codechina.org/2019/07/leetcode-242-valid-anagram-sort-java/
正文到此结束
Loading...