【题目描述】
编写一个程序,判断字符串是否为形如“子序列1&子序列2”模式的字符串,其中子序列2是子序列1的逆序列,子序列字符串长度最长不超过1000,且都为小写字母。是则输出YES,否则输出NO。
【输入格式】
数据有多组,每组占一行,包含一个字符串s
【输出 格式】
对于每组输入数据,输出一行YES或NO
【输入样例】
hello&ollhe
【输出样例】
NO
【思路及特别提示】
这题解放较常规。
tip1:首先应该在字符串中找到’&'的位置,然后把字符串以此位置切成两个,首先判断两个子串大小有没有超过最大长度限制1000,其次判断右子串翻转后的结果是不是与左子串一致,如果满足上面两个条件,再判断子串中是不是全是小写字符,如果是,则给rs变量赋值位YES,否则不对其进行其他操作,使用rs的默认值NO。
【代码】
#include<iostream>
#include<algorithm>
using namespace std;
//10min 13:39-13:49 问题A
int main(){
int i;
string str;
while(cin>>str){
int len=str.size();
int pos=str.find('&');
string rs="NO";
string pre=str.substr(0,pos);
string post=str.substr(pos+1);
reverse(post.begin(),post.end());
if(pre.size()<=1000&&post.size()<=1000){
if(pre==post){
for(i=0;i<pre.size();i++){
if(pre[i]<'a'||pre[i]>'z')
break;
}
if(i>=pre.size())
rs="YES";
}
}
cout<<rs<<endl;
}
return 0;
}