输入两个字符串,验证其中一个串是否为另一个串的子串。
输入两个字符串, 每个字符串占一行,长度不超过2000且不含空格。
若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)
否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)
否则,输出 No substring。
abc dddncabca
abc is substring of dddncabca
s1.find(s2) 在字符串s1中查找s,返回第一次找到的位置
s1.find(s2,x) 在字符串s1中从x位置开始查找s2,返回第一次找到的位置
s1.rfind(s2) 在字符串s1中从右边查找s2,返回第一次找到的位置
1 #include<bits/stdc++.h> 2 using namespace std; 3 void f(string a,int la,string b,int lb){ 4 int flag=0; 5 for(int i=0;i<la;i++){ 6 int j=0,m=i; 7 while(a[m++]==b[j++]&&a[m-1]!=‘\0‘) continue; 8 if(j==lb+1){ cout<<b<<" is substring of "<<a<<endl;flag=1;break; } 9 } 10 if(!flag) cout<<"No substring"<<endl; 11 } 12 int main(){ 13 string x,y; 14 cin>>x>>y; 15 int lenx=x.size(),leny=y.size(); 16 if(lenx>=leny) f(x,lenx,y,leny); 17 else if(lenx<leny) f(y,leny,x,lenx); 18 }
s1.rfind(s2,x) 在字符串s1中从右边x位置开始查找s2,返回第一次找到的位置
如果没有找到字符串,都是返回-1
原文:https://www.cnblogs.com/fuyifandsg/p/12247731.html