首页 > 其他分享 >2024-04-21---真题--一个字符串中的最长重复子串(滑动窗口变种)

2024-04-21---真题--一个字符串中的最长重复子串(滑动窗口变种)

时间:2024-04-21 21:22:07浏览次数:28  
标签:子串 窗口 21 04 真题 -- --- 滑动 指针

真题-一个字符串中的最长重复子串(滑动窗口变种)

题目:

image

思路:

首先这不是求公共子串,所以不需要动态规划记录。然后一个string相当于就是一个Char[],所以直接滑动窗口来枚举最好做。

说白了,这道题就是求abc|abc的问题。其实就是可以看作是一个大的滑动窗口(包含两个小的窗口),并且大的窗口左指针移动的条件是一轮遍历结束,右指针随着遍历+1.并且判断两个小的窗口是否相等(相等则正确),比较maxLen和右指针-左指针,取出最大值,得到结果。

代码:

    public int solve (String a) {
        // write code here
        if (a == null || a.length() <= 1) return 0;
        char[] chars = a.toCharArray();
        int len = chars.length;
        int maxLen = chars.length / 2;
        for (int i = maxLen; i >= 1;--i){
            for (int j = 0; j <= len - 2 * i;++j){
                if (check(chars, j, i)) 
                    return 2 * i;
            }
        }
        return 0;
    }
    public boolean check(char[] chars, int start, int len){
        for (int i = start;i < start + len;++i){
            if (chars[i] != chars[i +len]) 
                  return false;
        }
        return true;
    }

标签:子串,窗口,21,04,真题,--,---,滑动,指针
From: https://www.cnblogs.com/leleChang/p/18149523

相关文章

  • 21如何通过excel表制作燃尽图
    一,新建一个excel表, 二、选中整个表格,插入—数据透视图,然后默认确定,出现右侧字段  三、在本例中,右侧字段长按天数拖入下方的“轴”中作为横坐标,剩余的两项托入同水平的“值”中作为纵坐标 四、生成柱状图,点击插入—折线图,任选 五、燃尽图完成 ......
  • 第27天:安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞 - Shortcut
     https://www.kancloud.cn/manual/thinkphp5_1/354000ThinkPHP-Vuln-master ......
  • 23201228-第一次Blog
    一、前言:从大一下学期开始学习java到现在,已经完成了三次PTA用java实现的大作业,三次PTA作业的难度在逐渐增大,每次最后一题都是从第一次PTA大作业里迭代而来,难度很大且每次提升,涉及的内容有很多,比如类,方法,Arraylist等,但最主要的还是类的设计,通过这三次作业,很深刻的认识的了设计对于......
  • web server apache tomcat11-12-SSL/TLS Configuration
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • 2024年GPLT团体程序设计比赛L2-D吉利矩阵题解
    只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(IOI赛制),当时这道题是我不剪枝DFS拿了4分,压线拿铜牌!考完试一做,发现是个大水题(bushi)主要原理:DFS(深度优先搜索)+剪枝名言:学搜索核心就是学剪枝废话不说了,见代码点击查看代码//原理:DFS+剪枝#include<bi......
  • 基于resnet50的糖尿病视网膜分类-messidor数据集
    1importos2importtorch3fromtorchvisionimportdatasets,transforms4fromtorch.utils.dataimportDataLoader,SubsetRandomSampler56importtorch7fromtorchimportnn8fromtorch.utils.dataimportDataLoader,Dataset9import......
  • PTA1-3总结w
    <1>前言:知识点:1.类的定义:代码中定义了三个类,Question、Answer和Paper,分别用来表示问题、答案和试卷。每个类都包含了相应的属性和方法。2.对象的创建:在main方法中通过new关键字创建了Question、Answer和Paper类的对象,然后对对象的属性进行赋值和操作。3.HashMap的使用:代码......
  • 实验1-----keep健身运动APP
    一、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点。Axure优点:1.有强大的编辑功能,使得制作素材库会更便捷一点。2.更快的复制粘贴,素材库和原型库会多一些。3.可以项目共享,使得同事间可以同步工作,并保留所有工作历史,并可以随时到处历史版本的项目文......
  • 博客园商业化之路-商业模式:帮助开发者用代码改变口袋
    二十年来,由于一直没有找到商业模式,园子不是长大的,是亏大的,漫漫二十年只有3年左右是挣钱的,其他时间都是亏;这二十年,园子不是发展起来的,是挣扎起来的,经历了好几次起死回生。在熬过三年危机后,现在到了不找到商业模式就活不下的穷困潦倒地步,之前在商业化上碌碌无为现在到了无路可退。......
  • 前端资源共享方案对比-笔记:iframe/JS-SDK/微前端
    vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage但是本文还是详细说一遍:为什么需要异步加载语言包主要还是缩小提代码包,没有按需加载前,语言包内容太多好几屏幕全部是,虽然从webpack-analysis看图里面占比可以忽略不计......