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。
