当前位置: 首页 > news >正文

【LeetCode】459. 重复的子字符串(KMP2.0)

  今日学习的文章链接和视频链接

leetcode题目地址:459. 重复的子字符串

 代码随想录题解地址:代码随想录

题目简介

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

看到题目的第一想法(可以贴代码)

1. 记录每一个子串(从0开始,由短到长递增),一一与原字符串进行比较。

        好繁琐,写了好久,主要是没想清楚用哪种数据结构,引发了很多小bug。

        最后写了一个最暴力的解法(利用String类的substring)。。实在想赶紧写出来。

public boolean repeatedSubstringPattern(String s) {String res = "";int end = 1;int len = s.length();boolean check = true;while (end < len ){res = s.substring(0, end);int rLen = res.length();for (int com = 0; com < len; com = com + rLen){if (com+rLen <= len){if (!s.substring(com, com+rLen).equals(res)) {check = false;break;}}else return false;}if(check) return true;else check = true;end++;}return false;
}

实现过程中遇到哪些困难

1. 主要是没想清楚用哪种数据结构,引发了很多小bug。

看完代码随想录之后的想法

【解题思路】1. 暴力解法;2.移动匹配;3.KMP解法(s+s - 最长 相等 前后缀)

【想法】牛

看完视频自己写的ACC:

// 使用库函数(代替KMP算法部分)
public boolean repeatedSubstringPattern(String s) {String res = s + s;res = res.substring(1, res.length()-1);if(res.indexOf(s) == -1) return false;return true;
}
// 完全套用KMP算法(未简化)
public void getNext(int[] next, String s){int j = -1;next[0] = j;for (int i = 1; i < s.length(); i++){while(j >= 0 && s.charAt(i) != s.charAt(j+1)) j = next[j];if (s.charAt(i) == s.charAt(j+1)) j++;next[i] = j;}
}
public boolean repeatedSubstringPattern(String s) {String res = s + s;res = res.substring(1, res.length()-1);int[] next = new int[s.length()];getNext(next, s);int j = -1;for (int i = 0; i < res.length(); i++){while(j >= 0 && res.charAt(i) != s.charAt(j+1)) j = next[j];if (res.charAt(i) == s.charAt(j+1)) j++;if (j == s.length()-1) return true;}return false;
}

视频标答:

// KMP算法灵活应用
public void getNext(int[] next, String s){int j = -1;next[0] = j;for (int i = 1; i < s.length(); i++){while(j >= 0 && s.charAt(i) != s.charAt(j+1)) j = next[j];if (s.charAt(i) == s.charAt(j+1)) j++;next[i] = j;}
}
public boolean repeatedSubstringPattern(String s) {int len = s.length();if (len <= 1) return false;int[] next = new int[len];getNext(next, s);if (next[len - 1] >= 0 && len % (len-(next[len - 1]+1)) == 0) return true;return false;
}

学习时长


今日收获

1. 更熟悉了KMP算法的应用(先编辑next()数组,再将字串与原串进行比较)。

2. int[]数组排序:        Arrays.sort(intarr);

利用stream获取int[]的最大/小值:        int max/min = Arrays.stream(intarr).max().getAsInt();

打印int[]数组:        System.out.print(Arrays.toString(intarr));

相关文章:

【LeetCode】459. 重复的子字符串(KMP2.0)

今日学习的文章链接和视频链接 leetcode题目地址&#xff1a;459. 重复的子字符串 代码随想录题解地址&#xff1a;代码随想录 题目简介 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 看到题目的第一想法(可以贴代码&#xff09; 1.…...

CSS(五) -- 动效实现(立体盒子旋转-四方体+正六边)

一. 四面立体旋转 正方形旋转 小程序中 wxss中 <!-- 背景 --><view class"dragon"><!--旋转物体位置--><view class"dragon-position"><!--旋转 加透视 有立体的感觉--><view class"d-parent"><view …...

Win10使用OpenSSL生成证书的详细步骤(NodeJS Https服务器源码)

远程开启硬件权限&#xff0c;会用到SSL证书。 以下是Win10系统下用OpenSSL生成测试用证书的步骤。 Step 1. 下载OpenSSL,一般选择64位的MSI Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 一路点下来&#xff0c;如果后续请你捐款&#xff…...

sql_lab之sqli中的堆叠型注入(less-38)

堆叠注入&#xff08;less-38&#xff09; 1.判断注入类型 http://127.0.0.3/less-38/?id1 and 12 -- s 没有回显 http://127.0.0.3/less-38/?id1 and 11 -- s 有回显 则说明是单字节’注入 2.查询字段数 http://127.0.0.3/less-38/?id1 order by 4 -- s 报错 http:/…...

第5章-第3节-Java中对象的封装性以及局部变量、this、static

1、局部变量 【问题1】&#xff1a;什么是局部变量&#xff1f; 答&#xff1a;定义在局部位置的变量就是局部变量。 【问题2】&#xff1a;什么是局部位置&#xff1f; 答&#xff1a;方法的形参位置、方法体的内部。 【位置关系图】&#xff1a; class Xxx { //成员位…...

IP应用场景的规划

IP地址作为互联网通信的基石&#xff0c;在现代社会中扮演着至关重要的角色。本文将深入探讨IP地址在不同应用场景中的规划与拓展&#xff0c;探讨其在网络通信、安全、商业、医疗和智能城市等领域的关键作用与未来发展趋势。 IP地址的基本原理 IP地址是分配给网络上设备的数…...

27 redis 的 sentinel 集群

前言 redis 的哨兵的相关业务功能的实现 哨兵的主要作用是 检测 redis 主从集群中的 master 是否挂掉, 单个哨兵节点识别 master 下线为主管下线, 超过 quorum 个 哨兵节点 认为 master 挂掉, 识别为 客观下线 然后做 failover 的相关处理, 重新选举 master 节点 我们这里…...

计算机网络 网络安全技术

网络安全基本要素 机密性 不泄密完整性 信息不会被破坏可用性 授权用户 正常有效使用可控性 被控制可审查性 网络安全的结构层次 物理安全 物理介质安全控制 计算机操作系统安全服务 应用层次 被动攻击 :截获信息 主动攻击 : 中断信息,篡改,伪造 篡改 …...

WebAssembly 的魅力:高效、安全、跨平台(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

二维码智慧门牌管理系统升级:确保公安机关数据安全无忧

文章目录 前言一、多重安全防护措施二、安全措施综述与展望 前言 数据安全挑战与重要性 在数字化社会&#xff0c;数据安全对公共管理机构&#xff0c;尤其是公安机关而言&#xff0c;至关重要。随着二维码技术在门牌管理系统中的广泛应用&#xff0c;管理变得更智能、更便捷。…...

Golang leetcode59 螺旋矩阵

螺旋矩阵 leetcode59 初次尝试&#xff0c;从中心向外 func main() {n : 3fmt.Println(generateMatrix(n)) }// 初版&#xff0c;我们从中心点开始 func generateMatrix(n int) [][]int {//1.nXn矩阵table : make([][]int, n)for i : 0; i < n; i {table[i] make([]int, …...

深度学习(Deep Learning) 简介

深度学习&#xff08;Deep Learning&#xff09; 深度学习在海量数据情况下的效果要比机器学习更为出色。 多层神经网络模型 神经网络 有监督机器学习模型 输入层隐藏层 (黑盒)输出层 概念: 神经元 Neuron A^(n1)网络权重 Weights W^n偏移 bias b^n 激活函数: ReLUtan…...

服务器raid中磁盘损坏或下线造成阵列降级更换新硬盘重建方法

可能引起磁盘阵列硬盘下线或故障的情况&#xff1a; 硬件故障&#xff1a; 硬盘物理损坏&#xff1a;包括但不限于坏道、电路板故障、磁头损坏、盘片划伤、电机故障等。连接问题&#xff1a;如接口损坏、数据线或电源线故障、SATA/SAS控制器问题等。热插拔错误&#xff1a;在不…...

Ubuntu 常用命令之 exit 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 exit命令在Ubuntu系统下用于结束一个终端会话。它可以用于退出当前的shell&#xff0c;结束当前的脚本执行&#xff0c;或者结束一个ssh会话。 exit命令的参数是一个可选的整数&#xff0c;用于指定退出状态。如果没有指定&#…...

依托亚马逊云科技构建韧性应用

背景 现代业务系统受到越来越多的韧性相关的挑战&#xff0c;特别是客户要求他们的业务系统 724 不间断的运行。因此&#xff0c;韧性对于云的基础设施和应用系统有着至关重要的作用。 亚马逊云科技把韧性视为一项最基本的工作&#xff0c;为了让我们的业务系统能持续优雅地提供…...

Prometheus-JVM

一. JVM监控 通过 jmx_exporter 启动端口来实现JVM的监控 Github Kubernetes Deployment Java 服务&#xff0c;修改 wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar# 编写配置文件&#xff0…...

flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。 环境 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下&#xff1a; version: "2.2" services:jobmanager:image: flink:1.18.0-scala_2.12container_name: jobmanagerports:…...

pytorch张量的创建

张量的创建 张量&#xff08;Tensors&#xff09;类似于NumPy的ndarrays &#xff0c;但张量可以在GPU上进行计算。从本质上来说&#xff0c;PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 import torch import numpy torch.manual_seed(7) # 固…...

Web自动化测试工具的优势分析

Web自动化测试工具在现代软件开发中扮演着关键的角色&#xff0c;帮助团队确保Web应用程序的质量和稳定性。然而&#xff0c;选择合适的Web自动化测试工具对项目的成功至关重要。本文将介绍Web自动化测试工具优势是什么! 1. 自动化执行 Web自动化测试工具能够模拟用户的行为&am…...

黑豹程序员-读properties属性文件本地正常,打包jar后运行出错

读properties属性文件本地正常&#xff0c;打包jar后运行出错 java.io.FileNotFoundException:file:\D:\code\xml-load\target\XX.jar!\XXX(文件名、目录名或卷标语法不正确。)原因是读取方式不正确 当使用Spring Boot将应用打成jar时&#xff0c;需要读取resources目录下配置…...

PyQt6 QTimer计时器控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计52条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

Vue:defineAsyncComponent(异步组件)、component(动态组件)、keep-alive(缓存组件)

异步组件&#xff1a;defineAsyncComponent Vue3 的 defineAsyncComponent 特性可以让我们延迟加载组件。因为在默认情况下&#xff0c;在构建项目或运行项目时&#xff0c;会将所有所需要的打包成一个整体&#xff0c;vue为单页面应用&#xff0c;同步加载大量的页面代码会导…...

14 款最佳文件恢复软件 [2024 年最佳精选工具]

顶级文件恢复软件的综合列表和比较。阅读此详细评论以选择最佳文件恢复工具并轻松恢复您的文件&#xff1a; 您在选择文件恢复工具时遇到困难吗&#xff1f;在阅读了对十大文件恢复软件的评论后&#xff0c;您可以做出正确的决定。 数据丢失是一个严重的问题&#xff0c;会损…...

Redis基础篇-004 Redis的Java客户端

Redis客户端分为三类&#xff1a; 命令行客户端图形化桌面客户端编程客户端&#xff08;java客户端&#xff09; redis可视化工具和客户端 1、 Jedis快速入门 Jedis的官网地址&#xff1a; https://github.com/redis/jedis 1.1 新建一个Maven工程并引入以下依赖 <!--引入…...

【数据结构和算法】---栈和队列的互相实现

目录 一、用栈实现队列1.1初始化队列1.2模拟入队列1.3模拟出队列1.4取模拟的队列头元素1.5判断队列是否为空 二、用队列实现栈2.1初始化栈2.2模拟出栈2.3模拟入栈2.4取模拟的栈顶元素2.5判读栈是否为空 一、用栈实现队列 具体题目可以参考LeetCode232. 用栈实现队列 首先要想到…...

机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM

目录 一、背景介绍 1、机场协同决策支持系统是什么&#xff1f; 2、发展历程 3、机场协同决策参与方 4、相关定义 二、机场协同决策ACDM的建设目标 &#xff08;一&#xff09;机场协同决策支持系统的宏观目标 1、实现运行数据共享和前序航班信息透明化 2、实现地面资源…...

GO设计模式——17、解释器模式(行为型)

目录 解释器模式&#xff08;Interpreter Pattern&#xff09; 解释器模式的核心角色&#xff1a; 优缺点 代码实现 解释器模式&#xff08;Interpreter Pattern&#xff09; 解释器模式&#xff08;Interpreter Pattern&#xff09;提供了评估语言的语法或表达式的方式&am…...

基于SSM的大学生兼职平台的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的大学生兼职平台的设计与实现,j…...

Ignite内存配置

配置内存 #1.内存架构 #1.1.概述 Ignite内存架构通过可以同时在内存和磁盘上存储和处理数据及索引&#xff0c;得到了支持磁盘持久化的内存级性能。 多层存储的运行方式类似于操作系统&#xff08;例如Linux&#xff09;的虚拟内存。但是这两种类型架构之间的主要区别是&…...

前端基础vue路由懒加载

为什么用路由懒加载 首屏组件加载速度更快一些&#xff0c;解决白屏问题&#xff0c;常言道需要就加载&#xff0c;不需要就先放一边 懒加载定义 懒加载简单来说就是延迟加载或按需加载&#xff0c;即在需要的时候的时候进行加载。 使用 常用的懒加载方式有两种&#xff1a;即…...

龙岩天宫山简介概况/免费的关键词优化工具

1)drawcall是什么,降低drawcall对性能调优的意义 面试题: drawcall是什么? (1)我们的游戏,提交给GPU来绘制; (2)drawcall就是: 我们的整个场景里面,分几个批次提交给显卡绘制,整个就是drawcall (3)100个物体需要绘制,分多少次批次提交给我们的GPU,整个…...

福州仓山区网站建设/2021百度最新收录方法

chromedriver驱动与chrome浏览器版本要对上&#xff0c;否则打不快浏览器 以下是chromedriver对应的chrome版本&#xff1a; 驱动的下载地址如下&#xff1a; http://chromedriver.storage.googleapis.com/index.html chromedriver.exe文件使用方法&#xff1a; &#xff0…...

天津哪里做网站最好/关键词挖掘工具有哪些

对问题各个击破 —— 高效程序员的 45 个习惯之习惯35 “逐行检查代码库中的代码确实很令人恐惧。但是要调试一个明显的错误&#xff0c;只有去查看整个系统的代码&#xff0c;而且要全部过一遍。毕竟你不知道问题可能发生在什么地方&#xff0c;这样做是找到它的唯一方式…...

wordpress调整文章编辑界面/培训如何优化网站

//定义画刷CBrush m_greenBrush;//在构造函数中初始化m_greenBrush.CreateSolidBrush(RGB(210,230,190));//实现函数(改变FromView与static控件的背景色,更改其他方法类似,//在nCtrlColor处添加)HBRUSH CErrKbaseSearchView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)…...

网站建设业务文案/推广普通话手抄报图片大全

如下图 &#xff1a;报 Caused by: java.lang.IllegalStateException: SpringJUnit4ClassRunner requires JUnit 4.12 or higher. 有道翻译一下&#xff1a;告诉我们junit测试jar依赖包版本太低了 然后我去查看一下自己的项目pom文件的依赖 发现是4.11版本&#xff0c;于是修改…...

可以做物理题的网站/百度竞价开户公司

ODIS-E工程师车型说明汽车平台代码车型/代码/规格车型名称/车型结构/产地奥迪AU21XAU210/0_8XEA1 E-TRONAU210/0_FZ0A1PA 3TAU210/1_FZSA1PA 5TAU210/x_8X0A1 [EOP]AU316/0_8U0Q3AU316/0_8UDQ3 ChinaAU27XAU270/1_GBSA1NF 5TAU35XAU350/0_8P0AB2 [EOP]AU355/0_8PCAB2 Cabrio [E…...