题意理解:
求字符串S2或其反转的字符串S2‘ 是否为字符串S1的子串;
解题思路:
1. 借助递归分别将S1,S2分解为其子串进行比较;
2.利用string的find(),substring()方法;
解题代码:
#include<iostream>
#include<string>
using namespace std;
string reverseString(string s){
string result="";
for(int i=s.length()-1;i>=0;i--){
result+=s[i];
}
return result;
}
bool isSubString(string s1, string s2){
if(s2.length()==1){
if(s1.find(s2[0])>s1.length()){
return false;
}else{
return true;
}
}
int index=s1.find(s2[0]);
if(index>s1.length()){
return false;
}else{
return isSubString(s1.substr(index+1),s2.substr(1));
}
}
int main(int argc, char *argv[]){
int caseNum;
cin>>caseNum;
for(int i=0;i<caseNum;i++){
string s1,s2;
cin>>s1>>s2;
if(isSubString(s1,s2) || isSubString(s1,reverseString(s2))){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
return 0;
}