ALLAN AVELAR
Boa Noite<!-- --> <username class="jsx-4090757678"></username><icon class="jsx-3111688975"><img alt="🍻" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAclBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAAAAAD////rowDz8/MAAADUjAD/uQHl5eX9+e6oqKjs7Oz13qwoKCj+uADLy8s4ODjtrh71xVSPj4/lsUXy7N3ZmiBSUlJxcXHzzXblu2jlnQBCejIZAAAADHRSTlMACjIh2H/BoPb7PVsNNA6jAAAC5klEQVRYw+2YW5uCIBCGs/XYekSgzGNb//83LiAqwmDZ7mXfTerz+DYzMNNHh8NHH6n6+vZ8N4yyLApd3/v+epPiuRlTlAlF/NP19rOOQQYpCnaivCizKPJ2YBxfvnX9wRUiaUpQhX+u8qH/ct0k59wihiCMIz9Qe17qNdVvq26iPCFmr6crkZTgEMg2OFrqLJJCCkYBoitYN8cW0BlBFH6HbrxuaRynq7pBJL59sAYh4zVhgLWIrJsLkPhzolGkYkiiblEAg+DEYlhEJHi0gIiZWWxTytMzQ4pkanpMsV2YV2mr2GpmZAOU8iz0bS22I19+fck2QLEJmtrs2r+2ZFbQPD1q+uKaTalFZnucMUIoSep7r6ZGdhV7bA8kQEmSDw9K++chieXPAkdfsQUklNAnoPJqNhy/RzqonqoFc2gxzxMTlGUKKOEQOgwUioYWRcG+B5/XbWIHDXk+aIye3rukECA2qNZtAoNYvXt+tU4oEZpA6XrlYFDT950OKnQQWW1KGDRdiUjqmuqgcezsBNVsp/4LiN+VrNL/AmrKsvkTiEeyvP4HEI9kJ2jVIvPV+vVNENi074C0MfI+SB1sfwIto3YPCGiRxWPl09uvgvRx68iY8lmvgZD5azv60IdKyp+BjMG27KZyyA1diuKig/gzYNQqNqLsDFBykRwFlDC21W2J/c1Gj4bqkllLbFwyHgc0Nojbu5I+OpHi0D1oGTfLuyqnsTrSaOw43eilZZ0AqkvAiywd14pGme0Vt6EoLhuT05SxFcTXP6yQIQalGqqhsDuSB6NIOHYTlIqfxHsnUqy7O6sbD9YKOnijR9JQGLJbfFMbpsbo3fDWYpFihdtbmLWamZDmogUd5NY5K6ygw0AVwjZ76jgfIuHU0OjXt45bpwA4Cl0xUc0lwaM3enIadE5eIA95fuCpdeNWcKwb3K3vnU93nU7tdcv84xtn+KNetzA4vfuvwlI3N/BOzudvlo9W+gW3La50sq+F+QAAAABJRU5ErkJggg==" class="jsx-3111688975"/></icon>Seja bem vindo ao meu app!Instalar como aplicativo PWAInstalar em seu dispositivoAcesso RestritoEntrar / RegistrarBackoffice System (BOS)MyBankDados CadastraisProjetos / ServiçosDownloads / ProdutosCréditos / ComprasChromecast AppsEspaço de AcessosNotificaçõesDesconectarConteúdos disponíveisHomeSobre Mim3IntroduçãoResumo ProfissionalMetodologia de TrabalhoPortfólioPrincipais ProjetosFlex Network5IntroduçãoMineração PúblicaFlash TradingFlex TradingTutoriaisLaboratório7👨‍🎓MASTERCLASS🔮LOGOTYPES💰EASYBANK💘COOLPIDO💼EASYWORK💳EASYPAY📲YOU2APP🎁BRX💻MAINOSProdutos2🔮LOGOTYPES💰MY BANKInsightsHackerRank5Sock MerchantCounting ValleysRepeated StringJumping On CloudsLeft Rotation
EntrarRegistrarEsqueceu sua senha?EntrarNão tem uma conta? Crie uma agora!
🕓 Outubro 18, 2018🏎 5 minutos de leitura

Warm-up Challenges ⚡ Repeated String

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 ao longo do caminho, melhor ainda! Não afirmo que as respostas são as melhores ou mais eficientes, a menos que seja indicado o contrário. Elas são simplesmente as respostas que meu cérebro e minha intuição criaram para resolver o problema naquele momento.

Repeated String é um dos desafios iniciais com a dificuldade 'EASY'.


Qual o desafio?

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.

Exemplo

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.

O que temos que fazer?

Uma função que retorne um número inteiro de ocorrências da letra a no prefixo de comprimento n na cadeia infinitamente repetitiva.

Parâmetros
  • s = uma string para repetir
  • n = o número de caracteres a considerar

Sample Input

aba
10

Sample Output

7

Solução

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;
}

Lógica

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. 🖖


🕵Soluções Extras

Outras Linguas que eu falo


💎 Ruby

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

🐍 PYTHON 2 & 3

def repeatedString(s, n):
  amount = n // len(s)
  count = s.count('a')
  rest = s.count('a', 0, n % len(s))

  return amount * count + rest

golang GOLANG

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
}

scala SCALA

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
}

javaJAVA 7 & 8

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;
}

php PHP

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;
}
Não afirmo que essas respostas são as melhores ou mais eficientes, elas são simplesmente as que meu cérebro e minha intuição criaram para resolver o problema naquele momento.
Sobre Mim Resumo Profissional Metodologia de Trabalho
Laboratório 💱 FLEX NETWORK | 🏭 👨‍🎓 MASTER CLASS | ⏳ 💰 EASY BANK | ⏳ 💼 EASYWORK | ⏳ 💳 EASY PAY | ⏳ 🎁 LOGOTYPES | 🏭 💘 COOLPIDO | ⏳ 📲 YOU 2 APP | 🏭 💻 MAINOS | 🏭 🎁 BRX | 🏭
Produtos 🔮 LOGOTYPES | 🏭 💰 MY BANK | 🏭
PRINCIPAIS PROJETOS
Insights HACKERRANK #sockMerchant #countingValleys #repeatedString #jumpingOnClouds #leftRotation
Fale Comigo
This PWA was handcrafted with ❤ using Reactjs ➕ Nextjs and deployed on Github 🚀
Conectando-se ao Chrome Cast...