Registro de solución: Lituo 1456: El número máximo de vocales en una subcadena de longitud fija

te da cadenas sy enteros k.

Devuelve el número máximo de vocales que pueden estar contenidas en una sola subcadena sde longitud en la cadena.k

Las vocales en inglés son ( a, e, i, o, u).

Ejemplo 1:

Entrada: s = "abciiidef", k = 3
 Salida: 3
 Explicación: La subcadena "iii" contiene 3 vocales.

Ejemplo 2:

Entrada: s = "aeiou", k = 2
 Salida: 2
 Explicación: Cualquier subcadena de longitud 2 contiene 2 vocales.

Ejemplo 3:

Entrada: s = "leetcode", k = 3
 Salida: 2
 Explicación: "lee", "eet" y "ode" contienen 2 vocales.

Ejemplo 4:

Entrada: s = "ritmos", k = 4
 Salida: 0
 Explicación: La cadena s no contiene vocales.

Ejemplo 5:

Entrada: s = "intentar", k = 4
 Salida: 1

Idea: ventana corredera, la longitud de la ventana es k. Cuando la ventana se mueve, las letras que entran en la ventana de la derecha son vocales, y las letras que salen de la ventana de la izquierda también son vocales. De esta manera, una entrada y una salida se anulan. La letra de la derecha El lado de la letra que sale de la ventana no es una vocal, y la letra que sale de la ventana a la izquierda es una vocal. En este momento, el número de vocales es -1.

class Solution:
    def maxVowels(self, s: str, k: int) -> int:
        start , tmp = 0 , 0 # 第一个窗口的起始位置,当前窗口元音字符个数
        end = k - 1 # 第一个窗口结束位置
        mapping = 'aeiou'
        for i in range(end):
            if s[i] in mapping:
                tmp += 1
        result = tmp
        while end < len(s):
            if s[end] in mapping: # 判断窗口往后移动的这个月元素是否是元音
                tmp += 1
                result = tmp if tmp > result else result
                if tmp >= k: # 如果当前窗口的元音数=k,则直接返回
                    return k
            if s[start] in mapping:
                tmp -= 1
            start += 1
            end += 1
        return result

Supongo que te gusta

Origin blog.csdn.net/weixin_45314061/article/details/130416573
Recomendado
Clasificación