您的位置:首页 > 产品设计 > UI/UE

Codeforces 523C Name Quest

2015-10-20 19:25 861 查看
题目链接:http://codeforces.com/problemset/problem/523/C

题意:给出字符串a和字符串b,要求将b分为2半b1和b2,使得a是b1和b2的子串

思路:很简单(当时没想到=),找出字符串b的头个子串a结束的位置和最后一个子串开始的位置,2个位置中间的可以随便切

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char s1[1000030],s2[1000030];
int main()
{
while (cin>>s1>>s2)
{
int tem=0,flag1=-1,flag2=-1;
int l1=strlen(s1),l2=strlen(s2);

for (int i=0;i<l2;i++)
{
if (s1[tem]==s2[i]) tem++;

if (tem==l1)
{
flag1=i;
break;
}
}

tem=l1-1;
for (int i=l2-1;i>=0;i--)
{
if (s1[tem]==s2[i]) tem--;

if (tem==-1)
{
flag2=i;
break;
}
}
if (flag2-flag1>0) printf("%d\n",flag2-flag1);
else printf("0\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: