Pentru realizarea algoritmului am utilizat o structură de date "litera", care cuprinde:
- l (litera), un caracter, pentru care am alocat 1 octet;
- p,u (două numere), prima și ultima poziție a unui caracter, pentru care am alocat 4+4=8 octeți.
S-au declarat două variabile c (litera curentă citită) și m (litera "maximală" citită), pentru litere citite din fișierul "litere.in", pentru care s-au alocat un număr de 2*9=18 octeți.
Pe lângă cele două variabile, am declarat și o a treia de tip caracter ch, prin intermediul căreia citesc câte un caracter din fișierul dat, pentru care am alocat 1 octet.
În concluzie, variabilele folosite utilizează o memorie de 18+1=19 octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

Algoritmul începe prin citirea primului caracter din fișier și inițializarea "literei maximale", m.l și a literei curent c.l cu ch-ul citit, alături de prima și ultima poziție a fiecărei litere, respectiv: c.p=c.u=m.p=m.u=1.
Cât timp mai pot citi caractere din fișier le citesc, incrementând poziția curentă, care este c.u.
În cazul literei curente, recent citită din fișier, deduc că pentru litera curentă c.l i s-a terminat succesiunea identică, caz în care o compar cu "litera maximală"; în caz afirmativ modific specificațiile "literei maximale": m.l, m.p, m.u. Independent de acest ultim fapt, dacă litera curentă, recent citită este diferită de litera curentă, actualizez specificațiile noii litere curente, respectiv: c.l și c.p.
La finalul citirii din fișier, revin cu actualizarea datelor "literei maximale" cu noile date, dacă acest lucru este posibil.
La final, afișez "litera maximală", prima poziție în care apare ca șir maximal de astfel de litere și ultima poziție a acestuia.
În acest fel am EFICIENTIZAT TIMPUL DE EXECUȚIE, algoritmul fiind unul liniar, complexitatea algoritmului fiind maxim N (lungimea caracterelor din fișierul precizat în enunț) = O(N), de unde rezultă liniaritatea algoritmului.