代码随想录第十一天(459)

news2024/10/6 8:34:07

文章目录

  • 459. 重复的子字符串
  • 答案思路
    • 暴力破解
    • 移动匹配

459. 重复的子字符串

也不知道为啥这个提示简单题……

答案思路

暴力破解

例如:abcabc

移位一次:cabcab 移位两次:bcabca 移位三次:abcabc

现在字符串和原字符串匹配了,所以可以得出结论存在重复的子串。

基于这个思想,可以每次移动k个字符,直到匹配移动 length - 1 次。但是这样对于重复字符串很长的字符串,效率会非常低。在 LeetCode 中执行时间超时了。

//暴力代码
public  boolean repeatedSubstringPattern(String s) {
        for(int i = 1; i < s.length(); i++) {
            String str = rotate(s.toCharArray(),i);
            if(s.equals(str)) return true;
        }
        return false;
    }


    public  String rotate(char[] nums, int k) {
        k = k % nums.length;
        reverse(nums, 0, nums.length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.length - 1);
        return String.valueOf(nums);
    }

    public  void reverse(char[] nums, int begin, int end) {
        int i = begin, j = end;
        while(i < j) {
            char temp = nums[i];
            nums[i++] = nums[j];
            nums[j--] = temp;
        }
    }

作者:Goodlucky
链接:https://leetcode.cn/problems/repeated-substring-pattern/solutions/114572/jian-dan-ming-liao-guan-yu-javaliang-xing-dai-ma-s/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

涉及到的知识点,equals和==之间的区别,String重写后的equals比较的是内容,而不重写equals时,两者是相同的,如果使用的是基本数据类型,比较的是值,如果是引用数据类型,比较的是地址。

移动匹配

当一个字符串s:abcabc,内部由重复的子串组成,那么这个字符串的结构一定是这样的:
在这里插入图片描述
也就是由前后相同的子串组成。

那么既然前面有相同的子串,后面有相同的子串,用 s + s,这样组成的字符串中,后面的子串做前串,前后的子串做后串,就一定还能组成一个s,如图:

在这里插入图片描述
所以判断字符串s是否由重复子串组成,只要两个s拼接在一起,里面还出现一个s的话,就说明是由重复子串组成。

当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,要刨除 s + s 的首字符和尾字符,这样避免在s+s中搜索出原来的s,我们要搜索的是中间拼接出来的s。

class Solution {
   public boolean repeatedSubstringPattern(String s) {
        String str = s + s;
        return str.substring(1, str.length() - 1).contains(s);
}
}

作者:Goodlucky
链接:https://leetcode.cn/problems/repeated-substring-pattern/solutions/114572/jian-dan-ming-liao-guan-yu-javaliang-xing-dai-ma-s/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

substring(int beginIndex, int endIndex)方法截取字符串并返回其[beginIndex,endIndex-1]范围内的内容。
Java String contains()方法用于检查字符串是否包含指定的字符序列。返回值为true或false。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建Vue版Ant Design Pro后台管理系统

搭建Vue版Ant Design Pro后台管理系统 此文章通过基于Vue实现的Ant DesignPro脚手架快速构建一个后台管理系统的前端 相关文档链接 1、【Ant Design Pro of Vue 官方文档】2、【Vue 官方文档】3、【Vue Router 官方文档】 Ant Design Pro相关系列文章&#xff1a; 一、AntDesig…

Ansible中常用的模块

目录 一、Ansible Ad-Hoc命令集 1 Ad-hoc 使用场景 2 Ansible的并发特性 3 Ansible-doc用法 4 ansible命令运行方式及常用参数 5 ansible的基本颜色代表 6 ansible中的常用模块 command模块 shell模块 script模块 copy模块 fetch模块 unarchive模块 archive模块…

Spring3之控制反转(IOC)

简介 控制反转(Inversion of Control, 缩写为IoC), 是面向对象编程中的一种设计原则, 可以用来减低计算机代码之间的耦合度;其中最常见的方式叫做依赖注入(Dependency Injection, 简称DI), 还有一种方式叫 “赖查找” (Dependency Lookup); 通过控制反转, 对象在被创建的时候,…

CData Drivers for Acumatica

CData Drivers for Acumatica Acumatica的CData驱动程序为用户提供了使用AcumaticaERP数据的便捷途径&#xff0c;该数据来自商业智能、分析、定制应用程序、报告以及ETL。通过JDBC、ADO.NET和ODBC等标准驱动程序&#xff0c;以及与PowerShell、Power BI、Excel、SSIS等流行应用…

java微信小程序音乐播放器分享系统

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,音乐播放器小程序被用户普遍使用,为方便用户能够可以随时进行音乐播放器小程序的数据信息管理,特开发了基于音乐播放器小程序…

计算之变:联想问天给中国智能IT基础设施划下新起点

“冥昭瞢暗&#xff0c;谁能极之&#xff1f;冯翼惟象&#xff0c;何以识之&#xff1f;”屈原在《天问》中喊出了心中的困惑&#xff0c;用无数个问题&#xff0c;展现了中国人对世界的探索精神和好奇心。人对时空无限性的追问&#xff0c;伴随的是对有限性的焦灼感。幸好&…

JZ50、JZ57、JZ56

文章目录JZ50 第一个只出现一次的字符题目描述&#xff1a;具体实现&#xff1a;JZ57 和为S的两个数字题目描述&#xff1a;具体实现&#xff1a;JZ56 数组中只出现一次的两个数字题目描述具体实现&#xff1a;JZ50 第一个只出现一次的字符 题源 &#x1f449; 第一个只出现一…

在线预览PDF文件、图片,并且预览地址不显示文件或图片的真实路径。

实现在线预览PDF文件、图片&#xff0c;并且预览地址不显示文件或图片的真实路径。1、vue使用blob流在线预览PDF、图片&#xff08;包括jpg、png等格式&#xff09;。1、按钮的方法&#xff1a;2、方法详细&#xff1a;&#xff08;此方法可以在发起请求时携带token&#xff0c…

Data2Vec:视觉、语音和语言的语境化目标表征的高效自监督学习

Efficient Self-supervised Learning with Contextualized Target Representations for Vision, Speech and Language &#xff08;视觉、语音和语言的语境化目标表征的高效自监督学习&#xff09; 论文&#xff1a;efficient-self-supervised-learning-with-contextualized-t…

【Hello Linux】Linux工具介绍 (gcc/g++ gdb)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍Linux的常用工具gcc/g 以及gbd Linux工具介绍gcc / ggcc / g的作用为什么语言要经过这四步才能变为可执行指令gcc / g语法预处理编…

机器学习强基计划8-1:图解主成分分析PCA算法(附Python实现)

目录0 写在前面1 为什么要降维&#xff1f;2 主成分分析原理3 PCA与SVD的联系4 Python实现0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器学习模型&#xf…

MATLAB | 情人节来绘制更立体的玫瑰花吧

又是一年情人节&#xff0c;今年带来一款更有立体感的玫瑰&#xff1a; 曲面的函数表达式来自: http://www.bugman123.com/Math/index.html 这个网站&#xff0c;上面还有很多其他帅气的玩意。 基础绘制 xlinspace(0,1,300); thetalinspace(-2*pi,15*pi,300); [x,theta]meshg…

【历史上的今天】2 月 14 日:第一台通用计算机面世;IBM 成立;Julia 公开发布

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 2 月 14 日&#xff0c;在 1819 年的今天&#xff0c;打字机和第一台 QWERTY 布局键盘的发明者克里斯托弗肖尔斯&#xff08;Christopher Sholes&#xff09;出…

API文档自动生成工具

一、参考资料 从Python源码注释&#xff0c;自动生成API文档 二、问题引入 不管是开源还是闭源&#xff0c;要让所有人都能读懂你的代码这太难了&#xff0c;所以文档是很重要的。大部分情况&#xff0c;我们不希望维护一份代码再加上一份文档&#xff0c;这样做很容易造成文…

Springboot扩展点之InitializingBean

前言InitializingBean这个扩展点&#xff0c;其实在Springboot扩展点之BeanPostProcessor中已经简单有所涉及&#xff0c;而这篇文章的将重点分析其功能特性、实现方式和工作原理。功能特性1、Spring中提供了InitializingBean接口&#xff0c;帮助用户实现一些自定义的初始化操…

为什么学了模数电还是看不懂较复杂的电路图

看懂电路并不难。 (1) 首先要摆正心态&#xff0c;不要看到错综复杂的电路图就一脸懵逼&#xff0c;不知所错。你要明白&#xff0c;再复杂的电路也是由一个个的基本电路拼装出来的。 (2) 基础知识当然是少不了的&#xff0c;常用的基本电路结构搞搞清楚。 (3) 分析电路之前先要…

Unity通俗易懂的讲解PPU(Pixel Per Unit)与Camera Size

目录 前言 Unity的一个单位 Camera Size Pixel Per Unit的具体含义 前言 unity 2d中的sprite &#xff0c;具有一个参数&#xff1a;Pixel Per Unit 初学者往往不知道这个代表什么意思&#xff0c;如何理解&#xff0c;怎么设置&#xff0c;这个在unity的美术素材的使用也…

DynamicPDF HTML Converter for .NET 1.9 Crack

.NET HTML 到 PDF 转换库,快速将 HTML 转换为 PDF,转换为文件或字节数组,多线程性能 DynamicPDF Converter for .NET is a .NET API that allows developers to dynamically convert many common file formats to PDF documents in real-time. Converter supports converting …

使用Cifar10训练DenseNet121

DenseNet默认就是DenseNet-BC, 相对于resnet&#xff0c;densenet权重参数更少&#xff0c;鲁棒性更强. &#xff10;、下载数据集&#xff1a;Cifar-10在同级文件data下 预训练权重&#xff1a; densenet121: https://download.pytorch.org/models/densenet121-a639ec97.pth…

C++ 之基本数据类型(整型、布尔型及字符型)

文章目录参考描述数据类型整形有符号无符号规则sizeof 运算符进制cout 的自动转换&#xff08;进制&#xff09;后缀验证溢出主动权溢出布尔型变量判断结果字符型ASCII细节范围参考 项目描述菜鸟教程数据类型搜索引擎GoogleC Primer Plus &#xff08;第六版&#xff09;中文版…