hasła z wykorzystaniem palindromu

0

Potrzebuję pomocy z pewnym zadaniem, otóż muszę wygenerować hasło (które jest palindromem) z wpisanego wyrazu(w) np:
wyraz: egzamin hasło nimazgegzamin

wyznacz najdłuższe słowo w1 takie, że w1 jest początkiem słowa w oraz w1 jest palindromem
oznaczmy w=w1w2
hasło powstaje przez złączenie dwóch słów: w2 zapisanego od prawej do lewej i w.
Jeśli w jest palindromem, to w=w1, a słowo w2 jest puste (nie zawiera żadnych znaków).
W ogóle nie wiem jak się za to zabrać.

Dzięki za jakąkolwiek pomoc

4

Wygląda jak zadanie online. Daj linka do zadania, bo coś niezbyt dobrze przekopiowałeś/przepisałeś i trudno zrozumieć o co dokładnie chodzi.
I jeszcze: co już sam zrobiłeś i co nie działa w twoim rozważaniu.
W moim słowniku, "pomóc" oznacza wesprzeć kogoś w działaniu.

0

Okej a więc pełne zadanie brzmi tak:
TREŚĆ ZADANIA:
Bank oferuje swoim klientom internetowe konta osobiste. Do korzystania z tych kont potrzebna jest lista haseł jednorazowych. Jesteś pracownikiem Wydziału Bezpieczeństwa. Wydział ten zajmuje się tworzeniem dla klientów list haseł jednorazowych na podstawie słów wcześniej wygenerowanych przez Wydział Statystyk, według ustalonych przez bank algorytmów.

Na początku swojej działalności bank stosował następującą metodę generowania haseł. Hasłami jednorazowymi są zapisane od końca słowa wygenerowane przez Wydział Statystyk.
Przykład haseł wg schematu hasło : wygenerowane hasło
kajak : kajak
egzamin : nimazge
kominiarz : zrainimok
Metoda tworzenia haseł opisana w punkcie 1. okazała się zawodna, dlatego Wydział Bezpieczeństwa postanowił zmienić algorytm.
Palindrom to takie słowo, które czytane od lewej do prawej i od prawej do lewej jest takie same.
Algorytm tworzenia hasła ze słowa w:
− wyznacz najdłuższe słowo w1 takie, że w1 jest początkiem słowa w oraz w1 jest palindromem
− oznaczmy w=w1w2
− hasło powstaje przez złączenie dwóch słów: w2 zapisanego od prawej do lewej i w.
Uwaga: Jeśli w jest palindromem, to w=w1, a słowo w2 jest puste (nie zawiera żadnych znaków).
Przykład haseł wygenerowanych za pomocą punktu 2 słowo : najdłuższy palindrom rozpoczynający słowo : utworzone hasło
kajak : kajak : kajak
kajakarstwo : kajak : owtsrakajakarstwo
mama : mam : amama
egzamin : e : nimazgegzamin
NAPISZ PROGRAM KTÓRY:
wczyta dowolny tekst
wygeneruje hasło jednorazowe z wykorzystaniem palidromu i wypisze je na ekran

A do tej pory udało mi się zrobić odwracanie wyrazu wpisanego przez użytkownika

#include <iostream>

using namespace std;

string reverse(string str) {
    string Rstr;
    int len = str.length();
    for (int i = len - 1; i >= 0; i--)Rstr += str[i];
    return Rstr;
}

int main() {
    string password_input;


    cout << "Wpisz wyraz z ktorego chcesz wygenerowac haslo: " << endl;
    cin >> password_input;

    cout << password_input << endl;
    password_input = reverse(password_input);
    cout << password_input << endl;
    return 0;


}

0
  1. Ustalić jaka część (od początku) podanego słowa W jest palindromem (minimum będzie jeden znak, maximum całe)
  2. Odwracasz pozostałą cześć słowa i dołącz z przodu.

Proste jak drut!

2
bool isPalindrome(std::string_view s)
{
    return std::equal(s.begin(), s.begin() + s.size() / 2, s.rbegin());
}

std::string_view longestPalindromInFront(std::string_view s)
{
    while (!isPalindrome(s)) s.remove_suffix(1);
    return s;
}

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