LeetCode刷题进阶之有效的字母异位词(242)

一、题目
在这里插入图片描述
二、测试代码

//方法一  Arrays.sort排序
class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length()!=t.length())//两个字符串长度不相等直接返回false
        {
            return false;
        }
        char[] ch1=s.toCharArray();//toCharArray()方法将字符串转换为字符数组
        char[] ch2=t.toCharArray();
        Arrays.sort(ch1);//调用Arrays类的sort()方法对字符串进行排序
        Arrays.sort(ch2);
        return Arrays.equals(ch1,ch2);//调用Arrays类的equals方法判断字符串是否相等,若相等则返回true,不相等则返回false
    }
}

//方法二 哈希映射
class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length()!=t.length())//两个字符串长度不相等直接返回false
        {
            return false;
        }
        int[] count=new int[26];
        for(int i=0;i<s.length();i++)//若字符串s和字符串t长度相等,则遍历字符串s和t
        {
            count[s.charAt(i)-'a']++;//字符串s映射到count,数量加一
            count[t.charAt(i)-'a']--;//字符串t映射到count,数量减一
        }
        for(int c:count)
        {
            if(c!=0)//若count中有字符数量不为0则不为异位词返回false,否则返回true
            {
                return false;
            }
        }
    return true;
    }
}

三、运行结果

方法一:
在这里插入图片描述
方法二:
在这里插入图片描述

四、刷题总结

1、方法一的主要思路:我们首先判断两个字符串长度是否相等,不相等则直接返回 false。利用toCharArray()方法将字符串转换为字符数组,再调用Arrays类的sort()方法对字符串进行排序,最后调用Arrays类的equals方法判断字符串是否相等,若相等则返回true,不相等则返回false。

2、方法二的主要思路:我们首先判断两个字符串长度是否相等,不相等则直接返回 false。若相等,则初始化 26 个字母哈希表,遍历字符串 s 和 t。对于字符串s,将字符串s中的每个字符映射到哈希表上,数值+1;对于字符串t,将字符串t中的每个字符映射到哈希表上,数值-1。若最终哈希表各个字符数量为0,则说明两个字符串为异位词。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值