您的位置:首页 > 其它

//最长回文子序列问题,(字符串中还包含标点符号)

2016-03-05 10:05 232 查看
//最长回文子序列问题,(字符串中还包含标点符号)

void Solution()
{
char ch;//临时储存
char s[MAXN];int d=0;//输入
char t[MAXN];int n=0;//除去标点后的字符串
int p[MAXN];//下标记录
while((ch=getchar())!='\n')
{
s[d++]=ch;
}
for(int i=0;i<d;i++)//除去标点,转化为一致字符,记录下标
if(isalpha(s[i]))
{
p
=i;
t[n++]=tolower(s[i]);
}
int x,y,MAX=-1;//记录下标,最大值
for(int i=0;i<n;i++)//查询最长回文子序列
for(int j=0;j<n;j++)
{
int ok=1,m;
for(m=i;m<=j;m++)
if(t[m]!=t[j+i-m])
ok=0;
if(ok&&MAX<j-i+1)//记录
{
MAX=j-i+1;
x=p[i];
y=p[j];
}
}
cout<<MAX<<endl;//输出
for(int i=x;i<=y;i++)
{
cout<<s[i];
}
cout<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: