回文字符串

来源:互联网 发布:linux 多国 语言 查看 编辑:程序博客网 时间:2024/06/06 14:00

题目描述:
“回文字符串”是指一个字符串从左向右或者从右向左都相同,如abccba,aba等等,但是如果含有其他字符通过删减也可以构成回文字符串,如ajbkcuicpbya->abccba,删掉了j,k,u,i,p,y,所以通过算法求给定的一个字符串中最长的回文字符串。
如:ajbkcuicpbya->abccba
含有abba,cc,abccba等,只有abccba是最长的。

思路:
将输入字符串倒置,与原始字符串比较,求其最长公共子序列。

#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 1024int main(){    char str[N];    char temp[N];    char result[N];    char maxStr[N];    int maxLen = -1;    int i,j = 0,k;    scanf("%s",str);    //printf("%s",str);    int head,tail;    //字符串倒置    for (i=strlen(str)-1; i>=0; i--)    {        temp[j ++] = str[i];    }    temp[j] = '\0';    for (i=0; i<strlen(str); i++)    {        int count = 0;        k = i;        memset(result,0,N*sizeof(char));        for (j=0; j<strlen(temp) && k < strlen(str); j++,k++)        {            if (str[k] == temp[j])            {                result[count] = str[k];                count ++;            }        }        if (count > maxLen)        {            maxLen = count;            result[count] = '\0';            memcpy(maxStr,result,N*sizeof(char));        }    }    printf("length = %d,str = %s\n",maxLen,maxStr);    printf("\n");    system("pause");    return 0;}/*ajbkcuicpbyalength = 6,str = abccbaasdfghjkllength = 1,str = gsadeferfrtgtgtgtlength = 7,str = tgtgtgt*/
1 0
原创粉丝点击