字母异位词LeetCode 242题|刷题打卡

261 阅读1分钟

题目:

打卡解析:最大的字母长度是26个字母的长度不会超过256,定义数组counter,循环字符s因为s的长度和t的长度一定相等才走循环,长度不想等肯定不是字母异位词,挨个循环每个字母,让s的这个字母数字++让t的这个字母的数字--。如果两个单词是异位词就是,单词顺序不一致但是个数一样,每个单词出现的次数也是一样,一遍循环完++和--全部抵消了数组counter必定为0的时候返回true。有不等于0的返回fase

public static boolean isAnagram(String s, String t) {
    if (s.length() != t.length()) {
        return false;

    }
    int[] counter = new int[256];
    for (int i = 0; i < s.length(); i++) {
        counter[s.charAt(i)]++;
        counter[t.charAt(i)]--;
    }
    for (int count : counter) {
        if (count != 0) {
            return false;
        }
    }
    return true;

}

总结

全是字母的首先想到用一个256的数组做。当然长度是26的也可以每个字符.charAt(i)-'A'就好。

备注

本文正在参与「掘金 2021 春招闯关活动」, 点击查看