Data Science Academy - Python Fundamentos - Capítulo 7

Download: http://github.com/dsacademybr

Missão: Implemente um algoritmo para determinar se uma string possui todos os caracteres exclusivos.

Nível de Dificuldade: Baixo

Premissas

  • Podemos assumir que a string é ASCII?      Sim      Nota: As cadeias de caracteres Unicode podem exigir tratamento especial dependendo do seu idioma
  • Podemos supor que há distinção entre maiúsculas e minúsculas?      * Sim
  • Podemos usar estruturas de dados adicionais?      * Sim

Teste Cases

  • None -> False
  • '' -> True
  • 'foo' -> False
  • 'bar' -> True

Algoritmo: Hash Map Lookup

Manteremos um mapa hash (conjunto) para rastrear os caracteres únicos que encontramos.

Passos:

  • Faça um scan cada caracter
  • Para cada caracter:      Se o caracter não existir em um mapa de hash, adicione o caractere a um mapa de hash      Senão, retorne False
  • Retornar Verdadeiro

Nota:

  • Também podemos usar um dicionário, mas parece mais lógico usar um set, pois ele não contém elementos duplicados

Solução


In [1]:
class UniqueChars(object):

    def has_unique_chars(self, string):
        # Implemente aqui sua solução

Teste da Solução


In [2]:
%%writefile missao1.py

from nose.tools import assert_equal


class TestUniqueChars(object):

    def test_unique_chars(self, func):
        assert_equal(func(None), False)
        assert_equal(func(''), True)
        assert_equal(func('foo'), False)
        assert_equal(func('bar'), True)
        print('Sua solução foi executada com sucesso! Parabéns!')


def main():
    test = TestUniqueChars()
    try:
        unique_chars = UniqueChars()
        test.test_unique_chars(unique_chars.has_unique_chars)
    except NameError:
        pass


if __name__ == '__main__':
    main()


Overwriting missao1.py

In [3]:
%run -i missao1.py


Sua solução foi executada com sucesso! Parabéns!

Fim

Obrigado - Data Science Academy - facebook.com/dsacademybr