E:Rabbit的秘密纸条
C语言题库
共 1042字,需浏览 3分钟
·
2021-03-27 00:17
E:Rabbit的秘密纸条
内存限制:128 MB时间限制:1 S标准输入输出
题目描述
Rabbit 得到了一张秘密纸条,上面是由密密麻麻的小写字母组成的字符串。
已知,字符 c 与字符'z'-c+'a'是相反的。(即‘a’与‘z’,‘b’与‘y’......)
现在规定对称相反子串的定义为该子串从中间到两边对应位置的字符都是相反的。
例如给定字符串"azza",其对称相反子串有“a”,“z”,“az”,“azz”,"zza","za"。
Rabbit 想知道最长的对称相反子串的长度是多少?
输入格式
输入数据第一行为 T,表示数据组数。(1<=T<=10)
每组数据占一行,为字符串 S。(1<=|S|<=1000)
输出格式
对于每组数据输出一个整数,代表最长的对称相反子串的长度,占一行。
输入样例 复制
2
kadwxdwz
abcdevdcba
输出样例 复制
7
2
代码:
#include<iostream>
using namespace std;
string m;
int duichen(int front,int end,int leng)//对称查找
{
int s=1;
while(front>=0&&end<leng)
{
if(m[front]+m[end]=='a'+'z')
s+=2;
else
break;
front--;
end++;
}
return s;
}
int main()
{
int T,front,end,leng=1,length=0;
cin>>T;
while(T--)
{
leng=1;
cin>>m;
for(int i=0;i<m.size();i++)
{
length=max(duichen(i-1,i+1,m.size()),length);//奇数
length=max(duichen(i,i+1,m.size())-1,length);//偶数
}
cout<<length<<endl;
length=0;
}
}
评论