【Строка】 B034 количество лягушек (количество символов)

1. Название Описание

Дайте вам строку croakOfFrogs, которая представляет собой комбинацию звуков лягушки (строка «croak») от разных лягушек. Поскольку одновременно может лягать несколько лягушек, в croakOfFrogs смешиваются несколько «каркающих». Пожалуйста, верните минимальное количество различных лягушек, необходимое для всех лягушек в моделируемой струне.

Примечание: чтобы прозвучало карканье "карканье", лягушка должна последовательно вывести пять букв 'c', 'r', 'o', 'a', 'k'. Если все пять букв не выводятся, то он не будет звучать.

Если строка croakOfFrogs не является смесью допустимых символов "croak", пожалуйста, верните -1.

输入:croakOfFrogs = "crcoakroak"
输出:2 
解释:最少需要两只青蛙,“呱呱” 声用黑体标注
第一只青蛙 "crcoakroak"
第二只青蛙 "crcoakroak"

Метод 1: Подсчет

  • Потому что в допустимой строке число вхождений каждого символа должно быть одинаковым.
  • Если есть другой порядок символов, и число больше, чем символы в более раннем относительном порядке, то эта строка недопустима.
  • Если количество символов допустимо, количество требуемых лягушек зависит только от разницы между количеством символов c и k.
    • Например: когда лягушка снова звонит, а другая лягушка тоже звонит, тогда количество лягушек, необходимых в это время, будет равно 2.
public int minNumberOfFrogs(String croakOfFrogs) {
    int[] c = new int[5];
    char[] s = croakOfFrogs.toCharArray();
    int max = 0;
    for (char ch : s) {
        if (ch == 'c') c[0]++;
        if (ch == 'r') c[1]++;
        if (ch == 'o') c[2]++;
        if (ch == 'a') c[3]++;
        if (ch == 'k') c[4]++;
        for (int i = c.length-1; i >= 1; i--) {
            if (c[i] > c[i-1])
                return -1;
        }
        max = Math.max(max, c[0]-c[4]);
    }
    return c[0] == c[4] ? max : -1;
}

Анализ сложности

  • Сложность времени: ( N ) O (n)
  • Пространственная сложность: ( 1 ) O (1)

FWC

Опубликовано 714 оригинальных статей · Хвала 199 · 50 000+ просмотров

рекомендация

отblog.csdn.net/qq_43539599/article/details/105617572
рекомендация