首页 > 其他分享 >76. 最小覆盖子串c

76. 最小覆盖子串c

时间:2024-03-19 15:58:28浏览次数:22  
标签:子串 200 覆盖 int 最小 76

bool judge(int* s,int* t){
    for(int i=0;i<200;i++){
        if(s[i]<t[i]) return false;
    }
    return true;
}

char* minWindow(char* s, char* t) {
    int ns=strlen(s),nt=strlen(t);
    char* temp=(char*)malloc(sizeof(char));
    temp[0]=0;
    if(nt>ns) return temp;
    int tn[200]={0};
    int tt[200]={0};
    for(int i=0;i<nt;i++) tt[t[i]-'A']++;
    int head=0,tail=0,minhead=0,min=INT_MAX;
    tn[s[head]-'A']++;
    while(tail<ns){
        printf("%d ",tail );
        if(judge(tn,tt)){
            if(tail-head+1 < min){
                min=tail-head+1;
                minhead=head;
            }
            tn[s[head++]-'A']--;
            while(head<tail &&  tt[s[head]-'A'] ==0 ) head++;
        }else{
            tail++;
            if(tail<ns) tn[s[tail]-'A']++;
        }
    }
    if(min==INT_MAX) return temp;
    char* array=(char*)malloc(sizeof(char)*(min+1));
    for(int i=minhead;i<minhead+min;i++) array[i-minhead]=s[i];
    array[min]=0;
    return array;
}

 

标签:子串,200,覆盖,int,最小,76
From: https://www.cnblogs.com/llllmz/p/18083154

相关文章

  • 【工程应用九】再谈基于离散夹角余弦相似度指标的形状匹配优化(十六角度量化+指令集加
    继去年上半年一鼓作气研究了几种不同的模版匹配算法后,这个方面的工作基本停滞了有七八个月没有去碰了,因为感觉已经遇到了瓶颈,无论是速度还是效率方面,以当时的理解感觉都到了顶了。年初,公司业务惨淡,也无心向佛,总要找点事情做一做,充实下自己,这里选择了前期一直想继续研究的基于......
  • 209. 长度最小的子数组
    209.长度最小的子数组https://leetcode.cn/problems/minimum-size-subarray-sum/?envType=study-plan-v2&envId=top-interview-150 思路三种方法中,具有最优时间复杂度的方案滑动窗口设置start=0end=0执行循环:end向后探测,直到sum值大于等于target,更新最优长度......
  • NOJ南邮上机 最大公约数和最小公倍数 PROB1006 Python
    PROB1006  最大公约数和最小公倍数描述:求两个正整数的最大公约数和最小公倍数输入:两个正整数A,B输出:两个正整数的最大公约数、最小公倍数样例输入:43样例输出:112defmax_gcd(a,b):whileb!=0:temp=a%ba=bb=temp......
  • 【LeetCode 310】最小高度树
    题目描述原题链接:LeetCode.310最小高度树解题思路最小高度树的叶子节点肯定是初始只有一条边的节点;广度优先遍历,逐批将当前叶子节点移除,再将移除后新的叶子节点入队;所有节点全部入队时,当前队列中剩余的最后一批"叶子节点"就是答案;坦白说这题的严格思路证明没想过,第......
  • 【机器学习-04】最小二乘法的推导过程及使用方法(python代码实现)
    最小二乘法是一种常用的数据拟合方法,它可以通过最小化残差平方和来找到数据的最佳拟合线。有了上述内容铺垫之后,本文将介绍最小二乘法的推导过程,并提供使用Python实现最小二乘法的代码示例。1.模型及方程组的矩阵形式改写  首先,我们对......
  • LCR 088. 使用最小花费爬楼梯
    数组的每个下标作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](下标从0开始)。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为0或1的元素......
  • 字符串匹配/查找字符串中子串存在次数/出现位置下标 问题----- {1.[find] 2.[substr]
    下文将介绍三种方法,求解问题类型:1.子串在主串中出现次数2.子串在主串中每次出现的下标位置以此题为例:题目链接:https://www.luogu.com.cn/problem/P8195解法一:kmp#include<iostream>#include<string>usingnamespacestd;constintN=1e6+10;intne[N];......
  • lc907 子数组的最小值之和
    给定数组arr[n],求所有子数组中最小值的和,答案对1e9+7取模。1<=n<=30000;1<=arr[i]<=30000考虑每个数作为最小值对应的子数组有多少个,计算对答案的贡献,而子数组的个数可以用单调栈来维护。数组元素可能相同,为了避免重复计数,用半开半闭区间。classSolution{public:ints......
  • 第五十七天| 647. 回文子串、5.最长回文子串、516.最长回文子序列
    Leetcode 647.回文子串题目链接:647回文子串题干:给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的......
  • abc174E 最小化不超过k次操作后木棍的最大长度
    有n根木棍,第i根木棍长度为a[i],每次操作可以选一根木棍将其锯成两段,要求总操作次数不超过k。问最终所有木棍最大长度的最小值是多少?1<=n<=2e5;0<=k<=1e9;1<=a[i]<=1e9最小化最大值,或者反过来最大化最小值,优先考虑二分答案,对于某个特定的长度x,考虑将其锯成最长x一段需要的次数,如......