后面两个样例为啥过不了啊?

#include <bits/stdc++.h>
//#include <string>
//#include <iostream>
//#include <stdlib.h>
using namespace std;
typedef long long ll;
int min(ll a,ll b)
{
    if(a<=b)return a;
    else return b;
}
int main()
{
    string s;
    string t;
    ll i=0;
    cin>>s;
    cin>>t;
    ll next[200005]={0};
    ll ans=0;
    while(i<s.size())
    {
        //string s1;
        //s1=s.substr(i,s.size()-1);
        //s1=s;
         ll j=i,z=0,k=0;
         while(s[j]==t[k]&&j<s.size()&&k<t.size())
         {
             j++;
             k++;
             z++;
         }
        next[i]=z;
        i++;
    }
    for(int i=0;i<s.size();i++)
    {
        ans+=min(next[i],t.size()-1);
        if(s[i+next[i]]<t[next[i]])
            ans+=s.size()-next[i]-i;
    }
    cout<<ans<<endl;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务