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

蓝桥杯入门即劝退(二十四)重复的子字符串(被秒杀)

欢迎===关注===点赞===评论,共同学习,共同进步!

------持续更新蓝桥杯入门系列算法实例--------

如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流!

你的点赞、关注、评论、是我创作的动力!

-------希望我的文章对你有所帮助--------

专栏:蓝桥杯系列

目录

 一、题目描述

二、解题思路

三、代码实现

四、秒杀算法 !

 代码实现


 一、题目描述

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

示例 1:

输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。

示例 2:

输入: s = "aba"
输出: false

示例 3:

输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

二、解题思路

1、首先题目意思很简单,即判断是否是由子串重复构成,常规思路是进行枚举遍历。

2、注意其最大子字符串为length/2,即一半,因此我们在寻找其可行的子字符串时范围设置为一半即可。

3、进行遍历,确定一个初始子串长度为L、

4、再次判断是否能被子串整除,可以则开始二重循环,逐个字母判断是否相同。

5、一旦出现某个长度的子字符串可以进行重构即返回true,否则如果最后仍没有符合条件的即false。

三、代码实现

 public boolean repeatedSubstringPattern(String s) {int  Len=s.length();for (int i=1;i*2<=Len;i++){if (Len%i==0) {boolean match=true;for (int j=i;j<Len;j++){//从最靠近的字符开始逐一比对if (s.charAt(j)!=s.charAt(j-i)){match=false;break;}}if (match==true)return true;}}return false;}

四、秒杀算法 !

1、假设字符串s是由重复字符串构成的,那么把s加倍,即s+s

2、令S=s+s,去掉S的头字母以及尾字母,如果其中包含S即说明s是符合条件的。

3、因此只需要一行代码即可!!

4、indexOf()方法是求字符串某个位置开始匹配目标串的第一个字符的索引值

5、例如s=abbcbba,

  indexOf(bc,3)的值为4

 代码实现

class Solution {public boolean repeatedSubstringPattern(String s) {return (s + s).indexOf(s, 1) != s.length();}
}

 

发文不易,恳请大佬们高抬贵手!


点赞:随手点赞是种美德,是大佬们对于本人创作的认可!


评论:往来无白丁,是你我交流的的开始!


收藏:愿君多采撷,是大佬们对在下的赞赏!

http://www.lryc.cn/news/23992.html

相关文章:

  • 针对序列级和词元级应用微调BERT(需修改)
  • (四十七)大白话表锁和行锁互相之间的关系以及互斥规则是什么呢?
  • 织梦TXT批量导入TAG标签并自动匹配相关文章插件
  • Sentinel架构篇 - 10分钟带你看滑动窗口算法的应用
  • redis主从复制
  • 近期常见组件漏洞更新:
  • 深度学习常用的激活函数总结
  • Java编程问题top100---基础语法系列(二)
  • 网页打印与导出word实现在A4纸上相同效果
  • 备战英语6级——记录复习进度
  • 实例10:四足机器人运动学逆解可视化与实践
  • Elasticsearch7.8.0版本优化——路由选择
  • Go常量的定义和使用const,const特性“隐式重复前一个表达式”,以及iota枚举常量的使用
  • Git学习(1)pro git阅读
  • PHY自协商
  • 【大数据离线开发】8.2 Hive的安装和配置
  • Capture Modules:车载网络报文捕获模块
  • 数据结构与算法系列之时间与空间复杂度
  • Python代码使用PyQt5制作界面并封装
  • 【Node.js】MySQL数据库的第三方模块(mysql)
  • Docker中安装并配置单机版redis
  • 模拟微信聊天-课后程序(JAVA基础案例教程-黑马程序员编著-第八章-课后作业)
  • html2canvas将页面dom元素内容渲染成图片保存至本地
  • 前端进阶JS运行原理
  • Python识别二维码的两种方法(cv2)
  • 用一个例子告诉你 怎样使用Spark中RDD的算子
  • 什么是跨域? 出现原因及解决方法
  • 低代码系统能够解决哪些痛点?
  • 华为OD机试题,用 Java 解【两数之和绝对值最小】问题
  • AcWing算法提高课-3.1.1热浪