求s1是否是s2的子串。
分析:
例如sequence 和 subsequence 。
从头开始比较,s1[0]与s2[0]相同,那么它们下标都可+1,接着比较s1[1]和s2[1],不相同;这时应该保证s1[1]不动,而把s2下标+1.直到s1,s2下标移动到最后一位,若s1下标移动到了最后一位,显然判定成功了;如果s2下标到了最后一位,而s1没有,那么没有判定成功。
#include<iostream> #include<string> using namespace std; int main(){ string a,b; int i,j; while(cin>>a>>b){ i=0;j=0; while(1){ if(a[i]==b[j]){ i++;j++; } else j++; if(i==a.length()){ cout<<"Yes"<<endl;break; } if(i<a.length()&&j==b.length()){ cout<<"No"<<endl;break; } } } return 0; }