import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param t string字符串 
     * @return bool布尔型
     */
    public boolean areHerdCompositionsEqual (String s, String t) {
        // write code here
      if (s.length() != t.length()) {
        return false;
    }

    Map<Character, Integer> sCounts = new HashMap<>();
    Map<Character, Integer> tCounts = new HashMap<>();

    for (char c : s.toCharArray()) {
        sCounts.put(c, sCounts.getOrDefault(c, 0) + 1);
    }

    for (char c : t.toCharArray()) {
        tCounts.put(c, tCounts.getOrDefault(c, 0) + 1);
    }

    return sCounts.equals(tCounts);
}
}

Java代码

该题考察字符串的基本操作,集合的数据结构也考察了。

检查两个字符串st的长度是否相等,如果不相等,则牛棚的牛群构成肯定不相同,直接返回false。

初始化两个哈希表sCountstCounts来分别记录字符串st中每个字符出现的次数。

遍历字符串s中的每个字符,并将其添加到sCounts中。如果字符已经存在于哈希表中,我们增加对应字符的出现次数;否则,我们将该字符添加到哈希表并设置出现次数为1。遍历字符串t中的每个字符,并将其添加到tCounts中。

通过比较sCountstCounts是否相等来判断牛棚的牛群构成是否相同。如果两个哈希表相等,说明每个品种的牛在牛棚内的数量都相同,返回true;否则,返回false。