zoukankan      html  css  js  c++  java
  • codeforce-------D2. Remove the Substring (hard version)

    题意很好懂,给你一个s串和t串要求删除s中的一部分,使得剩下的s仍然是t的substring。

    题目链接

    思路:从s串前面顺序找一遍t串的位置(假设找到的串为s1),再从s串的后面倒序找一遍t的位置(假设找到的串为s2),那么要删除的串有三种可能:

    1、在s1前面。2、在s2后面。3、在s1和s2的中间;

    然后就比较一下哪一个最大就可以了。

    代码如下:

    #include<bits/stdc++.h>
    //#include<queue>
    #include <queue>
    #include <cstdio>
    #include<cstring>
    //#include <string>
    #define debug(x) cout<<'x'<<' '<<x<<endl;
    const int INF=0x3f3f3f3f;
    typedef long long ll;
    const int maxn = 5e5+5;
    const int mod =1e9+7;
    using namespace std;
    typedef long long ll;
    char s[maxn],t[maxn];
    int pre[maxn],last[maxn];
    int main()
    {
        scanf("%s%s",s+1,t+1);
        int slen=strlen(s+1);
        int tlen=strlen(t+1);
        int id=1;
        for(int i=1;i<=slen;i++)
        {
            if(s[i]==t[id])
            {
                pre[id++]=i;
                if(id>tlen)break;
            }
        }
        id=tlen;
        for(int i=slen;i>=1;i--)
        {
            if(t[id]==s[i])
            {
                last[id--]=i;
                if(id<=0)break;
            }
        }
        int ans=max(last[1]-1,slen-pre[tlen]);
        for(int i=1;i<=tlen-1;i++)
        {
            ans=max(ans,last[i+1]-pre[i]-1);
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    职场“潜”规则:心法和技法
    JVM参数配置
    python-编码
    pyserial库-串口通讯模块
    Arduino-舵机
    Arduino-中断
    Arduino-一些函数
    Arduino-位操作
    Nginx (一)Windows下编译Nginx源码以及安装 nginx for windows方法步骤
    MSYS2环境搭建
  • 原文地址:https://www.cnblogs.com/kayiko/p/11365150.html
Copyright © 2011-2022 走看看