算法修炼之路—【字符串】Leetcode 459 重复的子字符串

这篇博客介绍了如何解决LeetCode上的459题——判断一个非空字符串是否能由其子字符串重复多次构成。文章通过示例解释了问题,并提供了两种解题思路,包括遍历存储和利用字符串扩展及级联判断的方法,分析了时间复杂度和空间复杂度。
摘要由CSDN通过智能技术生成

题目描述

给定一个非空的字符串,判定它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不会超过10000

示例1:

输入: “abab”
输出: True
解释: 可由子字符串“ab”重复两次构成。

示例2:

输入: “aba”
输出: False

示例3:

输入: “abcabcabcabc”
输出: True
解释: 可由子字符串“abc”重复四次构成,或由子字符串“abcabc”重复两次构成。

思路分析

难度是简单 ,首先就是想到先遍历再存储最后遍历是否为重复字符:

  1. 遍历出标准子字符串subStr假设重复字符串中无重复字符);
  2. 存储至容器中;
  3. 遍历之后的字符串,是否满足等长部分相等;

这时,考虑到需要借助数据容器,我们需要set以判重,由于需要记录顺序,则我们同时借助StringBuilder来存储subStr,此时有代码1

**代码1 子字符串无重复字符 **

    public static boolean solution(String s) {
   
        if(s.length() < 2) return false;
        
        List<Character> list = new ArrayList<>(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值