char * reverseString(char *s) { char size = strlen(s); int i, j = 0; reverseS(s, 0, size-1); for (i = 0; i <= size; i++) { if (s[i] == ' ' || s[i] == '\0') { reverseS(s, j, i-1); j = i + 1; } } return s; }
int main(int argc, char * argv[]) { int broj; jazel * lista = NULL; jazel_single *lista_edinecna = NULL; printf("DVOJNA\n"); printf("Vnesi integer za dodavanje vo lista, za kraj vnesi bilo sto razlicno od broj:\n"); while (scanf("%d", &broj) == 1) { insert(&lista, broj); printf("Vnesi integer za dodavanje vo lista, za kraj vnesi bilo sto razlicno od broj:\n"); } printf("*****\nPRED:\n*****\n"); pecati(lista); reverse(&lista); printf("*****\nPOTOA:\n*****\n"); pecati(lista); jazel * tmp; jazel * kraj = lista->prev; while (lista != kraj) { tmp = lista->next; free(lista); lista = tmp; } free(kraj); getchar(); printf("EDINECNA\n"); printf("Vnesi integer za dodavanje vo lista, za kraj vnesi bilo sto razlicno od broj:\n"); while (scanf("%d", &broj) == 1) { insertS(&lista_edinecna, broj); printf("Vnesi integer za dodavanje vo lista, za kraj vnesi bilo sto razlicno od broj:\n"); } printf("*****\nPRED:\n*****\n"); pecatiS(lista_edinecna); reverseS(&lista_edinecna); printf("*****\nPOTOA:\n*****\n"); pecatiS(lista_edinecna); jazel_single * tmp1; while (lista_edinecna) { tmp1 = lista_edinecna->next; free(lista_edinecna); lista_edinecna = tmp1; } return 0; }
string longestPalindrome(string s) { int len = s.size(); if (len == 0 || len == 1) return s; int maxLengthOfPalindrome = 1; int beg = 0; int end = 1; string reverseS(s); reverse(reverseS.begin(), reverseS.end()); int maxLen = 1; string maxPalindrome(s.begin(), s.begin() + 1); for (int i = 0; i < reverseS.size(); ++ i) { if (i + maxLen >= reverseS.size()) break; string pattern = reverseS.substr(i, reverseS.size() - i); int tmpMaxLen = computeMaxPalindrome(s, pattern); if (tmpMaxLen > maxLen) { maxLen = tmpMaxLen; maxPalindrome = pattern.substr(0, maxLen); } } return maxPalindrome; }