#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if 0
int IsHuiWenStr(char *pStr, int iLen)
{
int iLoop;
if (iLen == 0) {
return 0;
}
for (iLoop = 0; iLoop < iLen / 2; iLoop++) {
if (pStr[iLoop] != pStr[iLen - 1 - iLoop]) {
return 0;
}
}
return 1;
}
#endif
#if 1
int IsHuiWenStr(char *pStr, int iLen)
{
int iFlag = 1;
int iI = 0;
int iJ = iLen - 1;
while (iI < iJ) {
if (pStr[iI] != pStr[iJ]) {
iFlag = 0;
}
iI++;
iJ--;
}
return iFlag;
}
#endif
int LongestHuiWenStrSearch(char *pInput, char *pOut, int iOutBufLen)
{
int iN;
int iInputLen;
int iLoop;
if (pInput == NULL || pOut == NULL) {
return -1;
}
iInputLen = strlen(pInput);
if (iOutBufLen <= iInputLen) {
return -1;
}
iN = iInputLen;
while (iN) {
for (iLoop = 0; iLoop <= iInputLen - iN; iLoop ++) {
if (IsHuiWenStr(pInput + iLoop, iN)) {
strncpy_s(pOut, iOutBufLen, pInput + iLoop, iN);
return 0;
}
}
iN--;
}
return 0;
}
int main(void)
{
int iRet;
char cIn[1001] = {'\0'};
char cOut[10001] = {'\0'};
int iOutBufLen = 1001;
scanf_s("%s", cIn, 1001);
iRet = LongestHuiWenStrSearch(cIn, cOut, iOutBufLen);
if (iRet != 0) {
printf("Longest Hui Wen String search failed,ulRet:%d\n", iRet);
return 1;
}
printf("Longest Hui Wen is :%s\n", cOut);
getch();
return 0;
}