Estoy publicando mis soluciones a los desafíos de HackerRank como una forma de mejorar mi aprendizaje, reforzar mi conocimiento y establecer una comprensión de los conceptos cubiertos. Si ayudo a alguien compartiendo en el camino, ¡aún mejor!
Repeated String es uno de los desafíos iniciales con dificultad 'EASY'.
Lilah tiene una string, s, de letras minúsculas en inglés que se repiten infinitamente. Dado un número entero, n, encuentre y devuelva el número de letras a en las primeras n letras de la string infinita de Lilah.
Si la string de Lilah es s = 'abcac' y n = 10, la substring que estamos considerando es abcacabcac, los primeros 10 caracteres de su infinito string. Hay 4 ocurrencias de la letra a en la substring.
Una función que devuelve un número entero de ocurrencias de la letra a en el prefijo de longitud n en la cadena que se repite infinitamente.
aba
107 function repeatedString (s , n ) {
let amount = parseInt (n / s .length ),
count = s .split ('' ).filter (c => c === 'a' ).length ,
rest = s .slice (0 , n % s .length ).split ('' ).filter (c => c === 'a' ).length ;
return amount * count + rest;
}let amount = parseInt (n / s .length ),
count = s .split ('' ).filter (c => c === 'a' ).length ,
rest = s .slice (0 , n % s .length ).split ('' ).filter (c => c === 'a' ).length ;Toda la lógica está contenida en estas tres variables:
amount es la cantidad de veces que aparece la string s basada en n de la string infinita de Lilah;
count es la cantidad total de a contenida en la string s
rest es la cantidad total de a contenida en la string que resulta del resto de dividir la longitud dada n con la string s
Finalmente, finalizo la función devolviendo el conteo final.
Otros idiomas que hablo
def repeatedString (s , n )
amount = n / s .size
count = s .count ('a' )
rest = s .slice (0 , n % s .size ).count ('a' )
amount * count + rest
end def repeatedString (s , n ):
amount = n // len (s )
count = s .count ('a' )
rest = s .count ('a' , 0 , n % len (s ))
return amount * count + restfunc repeatedString (s string , n int64 ) int64 {
var rest, amount, count int64
rest = n % int64 (len (s ))
amount = n / int64 (len (s ))
count = int64 (strings .Count (s , "a" ))
total := amount * count + int64 (strings .Count (s [0 :rest], "a" ))
return total
}def repeatedString (s : String , n : Long ): Long = {
val rest = n % s .length
val amount = n / s .length
val count = s .count (_ == 'a' )
val total = amount * count + s .substring (0 , rest.toInt ).count (_ == 'a' )
return total
}static int repeatedString (String s , long n ) {
long rest = n % s .length ();
long amount = n / s .length ();
long count = s.chars ().filter (c -> c == 'a' ).count ();
long total = amount * count + s .substring (0 , (int ) rest).chars ().filter (c -> c == 'a' ).count ();
return total;
}function repeatedString ($s , $n ) {
$rest = substr_count (substr ($s , 0 , $n % strlen ($s )), "a" );
$amount = intval ($n / strlen ($s ));
$count = substr_count ($s , "a" );
return $amount * $count + $rest;
}Pensamiento: Generalmente los que saben poco hablan mucho y los que saben mucho hablan poco.