题目描述:输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。
题目分析:题目只要求判断能否,没有要求删除哪些字符,所以只要判断两个条件:1.t中字符在s是否存在 2.t中字符的顺序是否和s中相应字符一样。但这样问题就来了,如果s中有重复的t中的字符会怎么样?如果重复的字符只在剩余字符的一边,那么可以直接通过存储最左边或最右边的位置解决。特别的,如果重复的字符在左右两边都有又该如何?那么应该有一个确定的条件判断,即记录重复字符的所有位置,从t的第二个字符开始,后面的字符若有在s中重复的(多个位置),选择恰好比上一个字符的位置大一点的位置(大于上一个字符位置的情况下最小的位置)。
代码如下(含BUG待解决):
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int T;
char s[100],t[100];
cin>>T;
while(T--){
cin>>s>>t;
int len1=strlen(s),len2=strlen(t),a[100]={-1},flag;
for(int i=0;i<len2;i++)
for(