Untitled
unknown
c_cpp
2 years ago
1.3 kB
8
Indexable
#include<stdio.h> #include<string.h> // Read only region start char* Sbstring(char* input1) { // Read only region end int start = 0; // Starting index of longest palindrome found int maxLength = 1; // Maximum length of palindrome found int len = strlen(input1); int low, high; // Check for palindrome of odd length centered at each character for (int i = 1; i < len; i++) { low = i - 1; high = i; while (low >= 0 && high < len && input1[low] == input1[high]) { if (high - low + 1 > maxLength) { start = low; maxLength = high - low + 1; } --low; ++high; } low = i - 1; high = i + 1; while (low >= 0 && high < len && input1[low] == input1[high]) { if (high - low + 1 > maxLength) { start = low; maxLength = high - low + 1; } --low; ++high; } } char* result = new char[maxLength + 1]; strncpy(result, &input1[start], maxLength); result[maxLength] = '\0'; return result; } int main() { char str[] = "cdcdf"; printf("Longest palindrome is: %s\n", Sbstring(str)); delete[] Sbstring(str); return 0; }
Editor is loading...