Algorytm na szukanie palindromow.

0

Witam. Wczytuje stringi i sprawdzam czy są palindromami. Jeśli ktoś chce pomóc to pytanie moje brzmi - co jest nie tak z tym algorytmem ?

 
int i = 0;
int y = sTemporary.length() - 1;

while(1) {
	if (sTemporary[i] == sTemporary[y]) {
           if (y == i) {
			cout << sTemporary << endl;
			break;
			}
        y--;
        i++;
        }
        else break; 
        
break;
}
0

Jak będziesz mieć parzystą liczbę znaków, to się indeksy i oraz y miną. W tym warunku powinieneś mieć i >= y raczej

0

Spróbuj inaczej:

string odwrocenie (string pomoc)
{
size_t size = pomoc.size();
string nowy;
for(size_t i = 0; i < size; ++i)
{
nowy += pomoc[size-i-1];
}
return nowy;
}

if ('kajak' == odwrocenie('kajak')) return true;

Minusem są dodatkowe operacje, plusem brak dodatkowych zagniezdzen i szukanie problemow np z parzystymi i nieparzystymi stringami.

Pozdrawiam,
Piotr

1

Było już wielokrotnie:

bool isPalindrome(const std::string& str) {
    return std::equal(str.begin(), str.begin() + str.size() / 2, str.rbegin());
}

Edit Generalnie twoje rozwiązanie jest dość kiepskie z tego względu, że robi za dużo na raz. Stwórz osobną funkcję do sprawdzania czy słowo jest palindromem (zwracającą bool), a wyświetlanie od tego odseparuj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1