Informática, perguntado por lucas27484, 6 meses atrás

PYTHON

Dada uma string s com apenas letras minúsculas, imprima o comprimento do palíndromo mais longo que pode ser construído com essas letras.

Entrada:

A única linha de entrada contém uma string 1≤|s|≤105.

Saída:

Imprima o comprimento do palíndromo mais longo que pode ser construído com essas letras.

Notas:

No primeiro exemplo de teste, a partir da string de entrada "abccccdd", o palíndromo mais longo que pode ser obtido possui comprimento 7. As possibilidades são "dccaccd", "dccbccd", "ccdadcc", "cdcacdc", "ccdbdcc", "cdcbcdc".

teste no anexo

Anexos:

Soluções para a tarefa

Respondido por Usuário anônimo
1

Resposta:

s = "abccccdd"

#Conta quantas vezes a letra aparece na sequência

def conta(letra):

 global s

 contador = 0

 for e in s:

   if letra == e:

     contador +=1

 return contador

conta_pares = 0

#grava as letras ja conferidas o número de repetição

ja_verificada = ""

#contando os pares

for i in s:

 if i not in ja_verificada:

   conta_pares += int(conta(i)/2)

   ja_verificada +=i

#Se a quantidade de pares for menor que o tamanho d string

#então há pelo menos 1 letra sem par e que portanto pode ficar

#no meio do polídromo

if 2*conta_pares < len(s):

 conta_pares = 2*conta_pares+1

else:

 conta_pares = 2*conta_pares

print("comprimento máximo: ",conta_pares)


lucas27484: Rodou não
Usuário anônimo: construí no colab e rodou, talvez quando copiei o código mudou o espaçamento, tenta organizar
Usuário anônimo: https://colab.research.google.com/drive/1wU2ELRQt3SYMQ9CdulmCl8eYX103fbS0#scrollTo=OFXU1w-K0bmw&line=1&uniqifier=1
lucas27484: Solicitei acesso
Usuário anônimo: ok, tinha esquecido de deixar o compartilhamento aberto
lucas27484: Eu olhei o código lá, foi a indentacao que acabei colocando errado, aí eu só mudei a coloquei um input no s e rodou perfeito
lucas27484: Muito obrigado, me ajudou muito
Perguntas interessantes