题目意思: 给定两个字符串判断第一个字符串是否是第二个字符串的字串
解题思路: 1:思路:直接处理两个字符串,枚举字符串1是否都再字符串2里面
2注意事项:字符串长度很大, 注意开100010左右数组
代码:
#include <algorithm> #include <iostream> #include <cstring> #include <string> #include <vector> #include <cstdio> #include <stack> #include <queue> #include <cmath> #include <set> using namespace std; #define MAXN 100010 string s , t; int vis[MAXN]; int solve(){ int l1 = s.size(); int l2 = t.size(); if(l1 > l2) return 0; memset(vis , 0 , sizeof(vis)); int pos = 0 ; int flag; for(int i = 0 ; i < l1 ; i++){ flag = 0; for(int j = pos ; j < l2 ; j++){ if(s[i] == t[j] && !vis[j]){ vis[j] = 1 ; pos = j+1; flag = 1; break ; } } if(!flag) return 0; } return 1; } int main(){ //freopen("input.txt" , "r" , stdin); int flag; while(cin>>s>>t){ flag = solve(); if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }