判断子序列
在判断两个数组的元素是否相等的时候可以使用
if (a[i] == b[j])来判断,这时不需要考虑数组越界的问题
while(a[i] != b[j]) 来判断,这时需要判断数组越界的问题
即使用的while的语句都要考虑是否越界的问题,要么在循环体内部判断,要么在判断条件中判断
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N],b[N];
int m , n;
int main(){
cin >> n >> m;
for(int i = 0;i < n;++i) cin >> a[i];
for(int i = 0;i < m;++i) cin >> b[i];
int i = 0, j = 0;
while(i < n && j < m){
while(j < m && a[i] != b[j]) ++j;
++i;
++j;
}
if( i == n ) cout << "Yes" <<endl;
else cout << "No" <<endl;
return 0;
}