# PBinfo #2132 – min_subsir – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Se consideră un șir de caractere format din litere mici ale alfabetului englez.

Cerința
Să se determine lungimea minimă a unei secvențe care conține toate literele întâlnite în șirul inițial.

Date de intrare
Programul citește de la tastatură șirul de caractere.

Date de ieșire
Programul va afișa pe ecran lungimea secvențele cerute.

Restricții și precizări

1 ≤ lungime șir ≤ 10000

Exemplu:
Intrare

aadcaabcbacadca
Ieșire

5
Explicație
Sunt folosite literele: a,b,c,d.
Secvențe de lungime minimă care folosesc toate literele: dcaab, bacad.

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
using namespace std;
char s[10001];
bool ap[150];
int nr[10000],Min;
int main()
{
    int i,L,dist=0,j,k,L_sb;
    cin>>s;
    L=strlen(s);
    for(i=0;i<L;i++)
        if (!ap[(int)s[i]])
        {
            ap[(int)s[i]]=true;
            dist++; ///cate litere distincte avem
        }
    Min=L;
    k=j=0;
    for (i=0;i<L;i++)
    {
        nr[(int)s[i]]++;
        if (nr[(int)s[i]]==1) k++;
        if (k==dist)
        {
            ///determin lungimea subsirului
            while (nr[(int)s[j]]>1)
            {
                if (nr[(int)s[j]]>1) nr[(int)s[j]]--;
                j++;
            }
            L_sb=i-j+1;
            if (Min>L_sb)
            {
                Min=L_sb;
            }
        }
    }
    cout<<Min<<'\n';
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2132)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2132/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2132/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
