数青蛙

public int minNumberOfFrogs(String croakOfFrogs) { // 当前青蛙数 int count = 0; // 最大青蛙数 int max_count = 0; // 哇 String str = "croak"; // str 转 map Map map = new HashMap(); for (Character c : croakOfFrogs.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); // 不满足顺序 if (!seqCheck(map)) { return -1; } // c时新增加一只青蛙 if (c == 'c') { count++; max_count = Math.max(count, max_count); } else if (c == 'k') { // 为k时则从map中移除一只青蛙 for (Character s : str.toCharArray()) { // 若croak不足则返回-1 if (map.get(s) < 1) { return -1; } map.put(s, map.get(s) - 1); } // 青蛙数量减一 count--; max_count = Math.max(count, max_count); }} // 循环完当前数量为0 if (count != 0) { return -1; } return max_count; }/** * 判断是否按照croak顺序 * * @param map * @return */ private boolean seqCheck(Map map) { Integer c_count = map.getOrDefault('c', 0); Integer r_count = map.getOrDefault('r', 0); Integer o_count = map.getOrDefault('o', 0); Integer a_count = map.getOrDefault('a', 0); Integer k_count = map.getOrDefault('k', 0); return c_count >= r_count && r_count >= o_count && o_count >= a_count && a_count >= k_count; }

    推荐阅读