刷题专栏(二十九):重复的子字符串

简介: 刷题专栏(二十九):重复的子字符串

前言

刷题专栏到目前已经是第二十九篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题《重复的子字符串》,是关于字符串结构的一道题。

一般遇到字符串相关的题目,都是绕不开循环遍历这条路的。

今天的这道题如何解答,就一起来看一下具体的实现吧。

image.png

算法题:重复的子字符串

根据题目的描述来看,是要在一个字符串中判断是否只存在重复的字符串。

这个题的解题思路其实就要搞清如何找出重复的字符串次数。

如果是零次,那么就不是重复的字符串,如果大于零次则就是重复的字符串。

这里我们可以使用双重循环的方式来处理,判断每一个字符串在内部循环中是否存在重复。

但是,这里我们也可以使用正则表达式来处理这道题,正则的逻辑就是判断某一个字符串在后续出现一次或多次即可得到相应的结果。

下面我们就来看一下代码编写情况。

代码展示

本次执行的代码如下所示:

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.repeatedSubstringPattern("aabb"));
    }
    public boolean repeatedSubstringPattern(String s) {
        int n = s.length();
        for (int i = 1; i * 2 <= n; i++) {
            if (n % i == 0) {
                boolean flag = true;
                for (int j = i; j < n; j++) {
                    if (s.charAt(j) != s.charAt(j - i)) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    return true;
                }
            }
        }
        return false;
    }
}

代码执行结果

今天的执行结果不怎么样,应该使用Java内置方法试一下的。image.png

总结

此题主要考察对字符串的处理是否足够熟练,不知道大家解出来了没有,评论区来一起讨论一下吧。

目录
打赏
0
1
2
0
2
分享
相关文章
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
本文是作者针对《剑指 Offer(第 2 版)》中 "数组中重复的数字" 问题的刷题记录,分享了使用排序算法和相邻比较大小两种方法来找出数组中的重复数字,并提供了C++的实现代码。
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
|
9月前
|
刷题专栏(二十六):字符串中的第一个唯一字符
刷题专栏(二十六):字符串中的第一个唯一字符
115 1
刷题专栏(二十六):字符串中的第一个唯一字符
|
9月前
|
刷题专栏(三十):数组拆分 I
刷题专栏(三十):数组拆分 I
135 2
代码随想录算法训练营第五十四天 | LeetCode 392. 判断子序列、115. 不同的子序列
代码随想录算法训练营第五十四天 | LeetCode 392. 判断子序列、115. 不同的子序列
77 1
|
9月前
|
刷题专栏(二十四):两个数组的交集
刷题专栏(二十四):两个数组的交集
117 0
|
9月前
|
六六力扣刷题字符串之重复的子字符串
六六力扣刷题字符串之重复的子字符串
75 0
LeetCode刷题之 存在重复元素(题目分析➕源代码)
LeetCode刷题之 存在重复元素(题目分析➕源代码)
LeetCode刷题之分隔链表(图解➕代码)
LeetCode刷题之分隔链表(图解➕代码)
重复的子字符串代码随想录刷题 (力扣刷题)
重复的子字符串代码随想录刷题 (力扣刷题)
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
83 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等