Estou postando sobre as minhas respostas aos desafios do HackerRank como forma de melhorar meu aprendizado, reforçar meu conhecimento e estabelecer uma compreensão dos conceitos abordados. Se eu ajudar alguém compartilhando ao longo do caminho, melhor ainda!
Repeated String é um dos desafios iniciais com a dificuldade 'EASY'.
Lilah tem uma string, s, de letras minúsculas em inglês que são repetidas infinitamente. Dado um número inteiro, n, encontre e retorne o número de letras a nas primeiras n letras da string infinita de Lilah.
Se a string de Lilah é s = 'abcac' e n = 10, a substring que consideramos é abcacabcac, os 10 primeiros caracteres de sua string infinita. Existem 4 ocorrências da letra a na substring.
Uma função que retorne um número inteiro de ocorrências da letra a no prefixo de comprimento n na cadeia infinitamente repetitiva.
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 a lógica está contida nestas três variáveis:
amount é a quantidade de vezes que a string s aparece com base em n da string infinita de Lilah;
count é a quantidade total de a contidos na string s
rest é a quantidade total de a contidos na string resultante do resto da divisão do comprimento determinado n com a string s
Por último, finalizo a função retornando a contagem final.
Outras línguas que eu falo
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;
}Pensamento: Podemos julgar o coração de um homem pela forma como ele trata os animais.