题目链接

题目大意:给出字符串str1,再第二行给出字符串str2,第三行给出删除str1中的字符的顺序,用数组a[]存,问最多按第三行的顺序删除str1中的字符剩下的字符串中str2

我们定义l为a[]的左边界,r为a[]的右边界,mid为a[]的中

我们要求的是最多能删除的字符数,那么mid的值越大越好,所以首先判断mid~r中剩下的字符包括str2吗?

如果包括包括我们令l=mid,看看mid可不可能取更大的值

如果不包括我们令r=mid(所以r永远不可能是mid的取值,及区间为左闭右开),降低mid的取值。

代码实现:

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
#define ll long long
using namespace std;
int a[],b[];char str1[],str2[];
int r,l,L;
int judge(int m)
{
int k=;
for(int i=m;i<L;i++)
b[k++]=a[i];
sort(b,b+k);
m=;
for(int i=;i<k;i++)
{
if(str1[b[i]-]==str2[m])//第三行数字是从1开始的
m++;
}
if(m==strlen(str2))
return ;
else
return ;
}
int main()
{
int n,mid,i,k,ans,j;
while(cin>>str1>>str2)
{
L=strlen(str1);
for(i=;i<L;i++)
scanf("%d",&a[i]);
l=;r=L;
while(r-l>)
{
mid=(l+r)>>;
if(judge(mid))
{
// printf("mid1=%d\n",mid);
l=mid;
}
else
{
// printf("mid2=%d\n",mid);
r=mid;
}
}
printf("%d\n",l);
}
return ;
}

D. String Game 二分加字符串匹配的更多相关文章

  1. Leetcode686.Repeated String Match重复叠加字符串匹配

    给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1. 举个例子,A = "abcd",B = " ...

  2. LeetCode 942. 增减字符串匹配(DI String Match) 49

    942. 增减字符串匹配 942. DI String Match 题目描述 每日一算法2019/6/21Day 49LeetCode942. DI String Match Java 实现 and ...

  3. LeetCode 686. 重复叠加字符串匹配(Repeated String Match)

    686. 重复叠加字符串匹配 686. Repeated String Match 题目描述 给定两个字符串 A 和 B,寻找重复叠加字符串 A 的最小次数,使得字符串 B 成为叠加后的字符串 A 的 ...

  4. 字符串匹配--kmp算法原理整理

    kmp算法原理:求出P0···Pi的最大相同前后缀长度k: 字符串匹配是计算机的基本任务之一.举例,字符串"BBC ABCDAB ABCDABCDABDE",里面是否包含另一个字符 ...

  5. 题解-洛谷P7114 字符串匹配

    题面 洛谷P7114 字符串匹配 \(T\) 组测试数据.给定字符串 \(S\),问有多少不同的非空字符串 \(A\),\(B\),\(C\) 满足 \(S=ABABAB...ABC\) 且 \(A\ ...

  6. 滑动窗口通用解leetcode字符串匹配问题

    滑动窗口,这玩意解决一些字符串匹配的题目是真的挺好用的,虽然本质还是双指针. 思路: 1.维护一个窗口,不断的向右边移动 2.满足要求后,移动左边,当不满足时,跳出. 3.重复1,2.得出答案. 下面 ...

  7. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  8. sdut 2125串结构练习--字符串匹配【两种KMP算法】

    串结构练习——字符串匹配 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sduto ...

  9. C语言字符串匹配函数

    C语言字符串匹配函数,保存有需要时可以用: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...

随机推荐

  1. Linux3_文件系统

    1.Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同.目录结构基本上都是一样的. Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区), ...

  2. chef简介

    Chef 的简单介绍 Chef 主要分为三个部分 Chef Server.Workstation 以及 Chef Client.用户在 Workstation 上编写 Cookbook.然后,通过 k ...

  3. 从动态获取div高度的问题展开来看

    ps 可能篇幅比较长,请大家耐心看看 今天有人在群里问我 动态获取高度怎么获取  我就说jq中的outerHeight. height .innerHeight   原生的height clientH ...

  4. php 前台post多维数组

    post多维数组时,在后台用$_POST接收不正常,应使用$_REQUEST

  5. windows下php配置redis

    方法/步骤 1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本   2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2.5-5.5-ts-vc11- ...

  6. What happens when we continue stacking deeper layers on a “plain” convolutional neural network?

    http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf The deeper model performs worse, but ...

  7. MySQL合并多行

    select id,group_concat(re_id order by re_id separator ",") as re_idfrom tablenamegroup by ...

  8. 聊聊数据库~6.SQL运维中篇

    上篇回顾:https://www.cnblogs.com/dotnetcrazy/p/10810798.html#top 1.6.5.MySQL日志相关 本文的测试环境:MySQL5.7.26.Mar ...

  9. sublime运行Python

    1.首先安装Python 我这里安装的是Python的3.7版本. 这里有两种安装方式 第一种: 默认路径安装,勾选添加到path复选框(这种情况,sublime可以直接运行Python了) 第二种: ...

  10. leetcode第一刷_Permutations

    生成全排列的经典问题.递归方法的典范. bool visited[10000]; void getPermutation(vector<int> &num, vector<v ...