242. 有效的字母异位词(Java)

题目描述:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

输入:

s = “anagram”, t = “nagaram”

输出:

true

提示:

  • 1 < = s . l e n g t h , t . l e n g t h < = 5 ∗ 1 0 4 1 <= s.length, t.length <= 5 * 10^4 1<=s.length,t.length<=5104
  • s 和 t 仅包含小写字母

代码实现:

public class Main{
    public static void main(String[] args) {
        String s = "anagram";
        String t = "nagaram";
        System.out.println(isAnagram(s, t));//true
    }

    /**
     * 直接计数26个字母出现的次数,进行对比
     * @param s 字符串1
     * @param t 字符串2
     * @return 返回真假
     */
    public static boolean isAnagram(String s, String t) {
        int[] arr1 = new int[26];//计数s:26个字母出现的次数
        int[] arr2 = new int[26];//计数t:26个字母出现的次数
        for (int i = 0; i < s.length(); i++) {
            arr1[s.charAt(i) - 'a']++;//由于题目给出的案例都是小写字母,则需要减去‘a’,使得最终下标落在[0,26)
        }
        for (int i = 0; i < t.length(); i++) {
            arr2[t.charAt(i) - 'a']++;
        }
        //判断两个数组中字符出现的次数是否一致
        for (int i = 0; i < 26; i++) {
            if (arr1[i] != arr2[i]) {
                return false;//出现一次不一致的情况,则直接返回假
            }
        }
        return true;
    }
}

你可能感兴趣的:(力扣刷题,java,算法,开发语言)