题目描述: 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。
int res=test[0];
int tmp=test[0];
for(int i=1;i<n;i++)
{
tmp=max(tmp+test[i],test[i]);
res=max(res,tmp);
}
cout<<res<<endl;
回文数索引
给定一个仅由小写字母组成的字符串。现在请找出一个位置,删掉那个字母之后,字符串变成回文。请放心总会有一个合法的解。如果给定的字符串已经是一个回文串,那么输出-1。
输入描述:
第一行包含T,测试数据的组数。后面跟有T行,每行包含一个字符串。
输出描述:
如果可以删去一个字母使它变成回文串,则输出任意一个满足条件的删去字母的位置(下标从0开始)。例如:
bcc
我们可以删掉位置0的b字符。
输入
3
aaab
baa
aaa
输出
3
0
-1
#include<string>
#include<iostream>
using namespace std;
int main()
{
int n;
string s;
cin>>n;
while(n--)
{
cin>>s;
string r(s.rbegin(),s.rend());
int i,len=s.length(),res=-1;
for(i=0;i<len;i++)
{
if(s[i]!=r[i])
{
res=(s[i]==r[i+1])?len-i-1:i;
break;
}
}
cout<<res<<endl;
}
return 0;
}