每个输入包含一个测试用例。每个测试用例包含两行长度不超过 10 的不包含空格的可见 ASCII 字符串。
输出一行 “Yes” 或者 “No” 表示结果。
x.nowcoder.com ooo
Yes
这道题,知道最长公共子序列知识点就能做对,点击打开链接
#include
#include
#include
using namespace::std ;
int main() {
string str1, str2 ;
while ( cin >> str1 >> str2 ) {
if ( str1.size() < str2.size() ) continue ;
vector> c( str1.size() + 1, vector( str2.size() + 1, 0 ) ) ;
for (int i = 0; i <= str1.size(); i++) {
for (int j = 0; j <= str2.size(); j++) {
if (i == 0 || j == 0) {
c[i][j] = 0;
}
else if (str1[i - 1] == str2[j - 1]) {
c[i][j] = c[i - 1][j - 1] + 1;
}
else if (c[i - 1][j] >= c[i][j - 1]){
c[i][j] = c[i - 1][j];
}
else{
c[i][j] = c[i][j - 1];
}
}
}
int lcs_length = c[str1.size()][str2.size()] ;
if ( lcs_length >= str2.size() ) cout << "Yes" << endl ;
else cout << "No" << endl ;
}
return 0 ;
}