Recursos-LCC

Um arquivo de todo material que consegui reunir, pertinente ao curso de LCC da UM.

View on GitHub

"""
Defina uma função que, dada uma lista de strings, retorne
essa lista ordenada por ordem decrescente do número de 
caracteres diferentes nela contidos.
Caso duas strings tenham o mesmo número de caracteres
diferentes a mais pequena em ordem lexicográfica deve
aparecer primeiro na lista retornada.
"""


def diferentes(frases):
    semrep = []
    for frase in frases:
        semrep.append( (frase, len(set(frase))) )
    semrep = [ x[0] for x in sorted(semrep, key = lambda x: (-x[1], x[0]) ) ]
    return semrep


###################################
#   Minha Resolução
###################################

def diferentes(frases):
    if frases == []:    # Caso vazio
        return []
    
    
    numcardifFinal = []     # Lista que vai ter os numeros de carateres de cada string
    for string in frases:   # Percorrer a lista frases
        numcardifAux = []       # Lista auxiliar que vai conter os carateres sem repetições de cada string
        for i in string:              # Percorrer a string
            if not i in numcardifAux:       # Se o carater lido não estiver em "numcardifAux", é adicionado à respetiva lista
                numcardifAux.append(i)
        numcardifFinal.append(len(numcardifAux))    # Adiciono o comprimento da lista "numcardifAux" que corresponde ao numero de carateres distintos da string
    Final = list(zip(frases, numcardifFinal))           # Criar uma lista de tuplos (string, numero de char)
    Final = sorted(Final, key=lambda x: (-x[1], x[0]))      # Ordenar pela ordem decrescente do numero de carateres, depois crescente do comprimento da string e por fim por ordem alfabetica
    Final = [x[0] for x in Final]       # Ir buscar só as strings
    return Final


Testes

# 1
frases = ["olamundo","cienciasdacomputacao","pyhtonefixe"]
> Resultado = ['cienciasdacomputacao', 'pyhtonefixe', 'olamundo']

# 2
frases = ["abcdef","ghijkl","fedcba","acebdf"]
> Resultado = ['abcdef', 'acebdf', 'fedcba', 'ghijkl']

retroceder