Enunț
Se citește de la tastatură un șir alcătuit din cel mult 100 litere mici ale alfabetului englez. Acest șir va fi supus unor procese de eliminare a tuturor secvențelor de caractere identice situate pe poziții alăturate, eliminările reluându-se până când șirul nu mai conține succesiuni de caractere alăturate egale. Realizați un program care afișează șirul rezultat după aplicarea algoritmului de mai sus.
Exemplu: pentru șirul „vacaantaaa” vom obține în ordine: „vacntaaa” și „vacnt”.
Vizual
Exemple de încercat
- teesst
- abbc
- cool
- rezolvareaa
Rezolvare
#include
#include
using namespace std;
int main()
{
char s[101];
cout <> s;
bool schimbare;
do
{
schimbare = false;
int inceput = -1;
int sfarsit = -1;
bool in = false;
int l = strlen(s);
for (int i = 0; i < l – 1; ++i)
{
if (s[i] == s[i + 1])
{
if (in)
{
sfarsit = i + 1;
}
else
{
in = true;
inceput = i;
sfarsit = i + 1;
schimbare = true;
}
}
else
{
if (in)
{
in = false;
break;
}
}
}
if (schimbare)
{
for (int i = sfarsit + 1; i < l; ++i)
{
s[i – sfarsit + inceput – 1] = s[i];
}
l = l – (sfarsit – inceput + 1);
s[l] = ‘\0’;
cout << s << endl;
}
} while (schimbare);
return 0;
}