Java 题解 | #牛群构成判断#
牛群构成判断
https://www.nowcoder.com/practice/b7b8c4d6390146dabe52d78e9e7136c6
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> countS = new HashMap<>(); Map<Character, Integer> countT = new HashMap<>(); // 统计字符串s中每个字符的出现次数 for (char c : s.toCharArray()) { countS.put(c, countS.getOrDefault(c, 0) + 1); } // 统计字符串t中每个字符的出现次数 for (char c : t.toCharArray()) { countT.put(c, countT.getOrDefault(c, 0) + 1); } // 检查每个字符在两个字符串中的出现次数是否相同 for (char c : countS.keySet()) { if (countS.get(c) != countT.getOrDefault(c, 0)) { return false; } } return true; } }
该题主要考察的知识点是字符串的处理和字符的统计。
代码的文字解释如下:
- 判断两个输入字符串的长度是否相等,如果不相等,则可以直接返回
false
,因为长度不同的字符串肯定无法满足相同的字符构成要求。 - 创建两个
Map<Character, Integer>
对象,分别用于统计字符串S
和字符串T
中每个字符的出现次数。这里使用Character
作为键,Integer
作为值。 - 遍历字符串
S
,对于每个字符,使用getOrDefault
方法来获取其当前的出现次数并加1,然后更新到countS
中。 - 遍历字符串
T
,使用同样的方式来统计每个字符的出现次数,并将结果更新到countT
中。 - 遍历
countS
中的每个字符,对于每个字符,比较其在countT
中的出现次数是否相等。如果有任何字符的出现次数不同,则说明两个字符串的牛棚构成不相同,返回false
。 - 如果遍历完成后没有发现不同的字符出现次数,说明两个字符串的牛棚构成相同,返回
true
。