題目描述:
輸入兩個字符串,驗證其中一個串是否為另一個串的子串。
輸入格式:
輸入兩個字符串, 每個字符串占一行,長度不超過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