Je publie mes solutions aux défis HackerRank afin d'améliorer mon apprentissage, de renforcer mes connaissances et d'établir une compréhension des concepts abordés. Si j'aide quelqu'un en partageant en cours de route, c'est encore mieux!
Repeated String est l'un des défis initiaux avec une difficulté 'EASY'.
Lilah a une string, s
, de lettres anglaises minuscules qui se répètent à l'infini. Étant donné un entier, n
, trouvez et retournez le nombre de lettres a
dans les premières lettres n
de la string infinie de Lilah.
Si la string de Lilah est s = 'abcac'
et n = 10
, la substring que nous considérons est abcacabcac
, les 10 premiers caractères de son infini string. Il y a 4 occurrences de la lettre a
dans la substring.
Une fonction qui renvoie un nombre entier d'occurrences de la lettre a
dans le préfixe de longueur n
dans la string se répétant à l'infini.
aba
10
7
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 ;
Toute la logique est contenue dans ces trois variables:
amount
est le nombre de fois où la string s
apparaît en fonction de n
de la string infinie de Lilah;
count
est le montant total de a
contenu dans la string s
rest
est la quantité totale de a
contenue dans la string résultant du reste de la division de la longueur donnée n
avec la string s
Enfin, je finalise la fonction en retournant le décompte final.
Autres langues que je parle
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 + rest
func 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;
}
Pensée: Avoir la foi, c’est signer une feuille blanche et permettre à Dieu d’y écrire ce qu’il veut dessus.