给你一个仅由大写英文字母构成的字符串SS,你需要从中找出一个最长的由字母 ‘A’ 开头,字母 'Z' 结束的子串,输出其长度,找不到输出00。
一行一个字符串$S
一行一个数,表示答案。
代码
#include<bits/stdc++.h>
using namespace std;
char S[200000];
int main(){
int a,b,pd=0; //pd用来判断找没找到Z
cin.getline(S,200000);
int len=strlen(S);
for(int i=0;i<len;i++) //寻找第一个A(从前往后)
{
if(S[i]=='A')
{
a=i; //找到第一个A位置
pd=1;
break;
}
}
for(int i=len-1;i>=1;i--) //寻找第一个Z(从后往前)
{
if(S[i]=='Z')
{
b=i; //找到第一个Z位置
if(pd==1) //判断有没有找到A
pd=1;
else
pd=0;
break;
}
}
if(pd&&b>a) //找到A和Z并且A在Z前面
cout<<b-a+1; //输出长度
else
cout<<0;
return 0;
}
有一个WA,自己找不出bug
我太弱了