字符串 242.有效的字符异位词

题目

给定两个字符串 st ,编写一个函数来判断 t 是否是 s 的字母异位词。

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

分析

首先要理解题目,什么是异位词?根据示例,我们知道它们互相有相同的字母,但是字母的排序不一样,这就是异位词。所以可以采用哈希表来记录s和t的对应字母的数目,这才是本质。

那么就很简单了,用两次循环来生成简单的哈希数组,再比较哈希数组,这是一个比较容易理解的方法。

代码

class Solution {
    public boolean isAnagram(String s, String t) {
        /*若均为空,则返回true*/
        if( s == "" && t == "" )
        {
            return true;
        }
        
        char[] array_s = s.toCharArray();
        char[] array_t = t.toCharArray();
        int[] next_s = new int[26];
        int[] next_t = new int[26];

        /*生成next数组*/
        for( int i = 0 ; i < s.length() ; i++ )
        {
            next_s[ array_s[i] - 'a' ]+=1;
        }
        for( int i = 0 ; i < t.length() ; i++ )
        {
            next_t[ array_t[i] - 'a' ]+=1;
        }

        /*比较next数组*/
        for( int i = 0 ; i < 26 ; i++ )
        {
            if( next_s[i] != next_t[i] )
            {
                return false;
            }
        }
        return true;

    }
}
posted @ 2020-09-02 17:27  Rego  阅读(147)  评论(0编辑  收藏  举报