Zapraszam do doskonalenia swoich koderskich umiejętności.
Nie jesteś zalogowany na forum.
Strony: 1
Kasia niedawno poznała wszystkie literki w szkole. Z wielką pasją potrafiła całe dnie spędzać na pisaniu długich słów swoim ulubionym flamastrem. Pisała i pisała "tasiemce" tak długo, aż flamaster wypisał się. Kasia posmutniała. Z trudem, ale udało jej się uprosić swoją mamę, aby kupiła jej nowy pisak. Musiała jednak obiecać, że tym razem będzie bardziej oszczędna przy jego używaniu żeby wystarczył na dłużej. Kasia zaczęła zastanawiać się w jaki sposób będzie mogła zrealizować obietnicę daną mamie.
Postanowiła, że aby zaoszczędzić wkład flamastra będzie wypisywała skróconą wersję wymyślanych wyrazów. Jeśli miała zamiar napisać więcej niż dwie takie same literki obok siebie w wyrazie, to teraz napisze literkę a następnie liczbę, określającą ilość wystąpień tej literki.
Zadanie
Twoim zadaniem jest dla zadanego wyrazu, który wymyśliła Kasia, podanie skróconej wersji tego wyrazu.
Wejście
W pierwszej linijce wejścia znajduje się liczba naturalna C, 1 ≤ C ≤ 50, oznaczająca ilość zestawów danych. W kolejnych C wierszach wejścia znajdują się zestawy danych. Każdy zestaw składa się z niepustego wyrazu złożonego z samych dużych liter alfabetu amerykańskiego. Długość wyrazu nie przekracza 200 znaków.
Wyjście
Dla każdego zestawu danych, dla zadanego wyrazu, na wyjściu powinna znaleźć się jego skrócona wersja.
Przykład
Dla danych wejściowych:
4
OPSS
ABCDEF
ABBCCCDDDDEEEEEFGGHIIJKKKL
AAAAAAAAAABBBBBBBBBBBBBBBB
prawidłowym rozwiązaniem jest:
OPSS
ABCDEF
ABBC3D4E5FGGHIIJK3L
A10B16
#include <iostream>
using namespace std;
int main()
{
int n, ile=1;
cin >> n;
string* tab = new string[n];
for(int i=0; i<n; i++)
cin >> tab[i];
for(int i=0; i<n; i++)
{
for(int j=1; j<=tab[i].length(); j++)
{
if(tab[i][j]==tab[i][j-1]) ile++;
else
{
if(ile>2)
cout << tab[i][j-1] << ile;
else if(ile==2)
cout << tab[i][j-1] << tab[i][j-1];
else
cout << tab[i][j-1];
ile=1;
}
}
cout << endl;
}
delete[] tab;
return 0;
}
Offline
Strony: 1