El Coleccionista de Letras Únicas P26915


Statement
 

pdf   zip

thehtml

Un peculiar bibliotecario tiene la costumbre de organizar los libros basándose en secuencias de letras únicas. Su teoría es que las palabras más interesantes son aquellas que contienen la mayor cantidad posible de letras diferentes consecutivas. Para ayudarle, necesitamos crear un programa que analice cadenas de texto y encuentre la subcadena más larga donde no se repita ningún carácter. Por ejemplo, en la cadena “cerebro”, la subcadena más larga con caracteres únicos es “ebro”. Cada letra mayúscula se considera diferente de su versión en minúscula.

Entrada

La entrada consiste en varios casos de prueba. Cada caso de prueba contiene una única línea con una cadena no vacía de longitud igual o inferior a 260000, formada únicamente por caracteres del alfabeto inglés (a–z, A–Z).

Salida

Para cada caso de prueba, el programa debe imprimir una línea con dos elementos separados por un espacio: la subcadena más larga con caracteres únicos y la posición donde comienza esta subcadena (numerando desde 0). Si existe más de una solución, se debe imprimir la que aparece primero en la cadena original.

Observación

Recordad que las funciones ord y chr permiten convertir entre un carácter y su código numérico ASCII: por ejemplo, chr(ord(’x’)+1) devuelve ’y’. El mayor código numérico de las letras consideradas es el de la ’z’, y el menor el de la ’A’.

Observación

Se espera una solución en tiempo lineal, que procese cada carácter rápidamente sin importar el número total de letras distintas en el alfabeto.

Public test cases
  • Input

    cerebro
    aaabb
    abcdefdabcghi
    aAbBcC
    

    Output

    ebro 3
    ab 2
    efdabcghi 4
    aAbBcC 0
    
  • Information
    Author
    David García Soriano
    Language
    Spanish
    Official solutions
    Python
    User solutions
    C++ Python