459. 重复的子字符串(Java)

news/2024/7/23 11:20:59 标签: java, 算法, 开发语言

题目描述:

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

输入:

s = “abcabcabcabc”

输出:

true
解释: 可由子串 “abc” 重复四次构成。 (或子串 “abcabc” 重复两次构成。)

代码实现:

java">public class Main{
    public static void main(String[] args) {
        String s = "abcabcabcabc";
        System.out.println(repeatedSubstringPattern(s));//true
    }

    /**
     * 从0索引开始枚举 存在的重复字符串(模式串) 暴力
     *
     * @param s 主串
     * @return 是否存在要求的模式串
     */
    public static boolean repeatedSubstringPattern(String s) {
        //字符串长度
        int len = s.length();
        int flag = 1;
        //重复字符串的长度应该大于等于1,小于等于2/len
        for (int i = 1; i <= len / 2; i++) {
            //只有能切割成自然数个重复字符串时,才进行判断
            //这里假定i就是重复字符串的长度
            if (len % i == 0) {
                flag = 1;
                for (int j = i; j < len; j++) {
                    if (s.charAt(j) != s.charAt(j - i)) {
                        //j:指向当前主串的指针  i:假定的模式串长度
                        flag = 0;//如果出现一次匹配不成功的情况,则令标记变量为0,跳出本次循环
                        break;
                    }
                }
                if (flag == 1) {
                    //经过上述循环之后,判断是否存在重复的模式串
                    return true;
                }
            }
        }
        //不存在,返回假
        return false;
    }
}

http://www.niftyadmin.cn/n/5340161.html

相关文章

ElasticSearch 7.x现网运行问题汇集2

问题描述 现网indices有数据&#xff0c;如下&#xff0c;GET /_cat/indices得到的结果里&#xff0c;待查索引显示有数据472033条&#xff0c;但是Postman 发查询语句GET /_search match_all&#xff0c;查不出数据&#xff1b;GET /_count也是0。索引状态也是open&#xff0…

C++之void*指针

先看一个例子 #ifndef _Aspect_Handle_HeaderFile#define _Aspect_Handle_HeaderFile​#ifdef _WIN32 typedef void* HANDLE; typedef HANDLE Aspect_Handle;#else typedef unsigned long Aspect_Handle;#endif /* _WIN32 */​#endif /* _Aspect_Handle_Header…

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…

修改并配置flutter不同平台的启动图标,很方便就可以修改,全平台支持

Flutter 启动器图标-一个包&#xff0c;简化了更新您的 Flutter 应用程序的启动器图标的任务。完全灵活&#xff0c;允许您选择什么平台&#xff0c;您希望更新的启动器图标&#xff0c;如果你想&#xff0c;选项保留您的旧启动器图标&#xff0c;以防您想恢复到未来的某个时候…

easyexcel报错解决

问题 项目由poi改用easyexcel&#xff0c;报错如下&#xff1a; java.lang.NoSuchMethodError: ‘org.apache.poi.ss.usermodel.CellType org.apache.poi.ss.usermodel.Cell.getCellType()’ 原因 easyexcel中的poi和项目原本的poi版本冲突问题。 由于之前做过easyexcel项目…

【git分支管理策略】

文章目录 前言一、分支管理策略简介二、git基本操作三、git分支远程分支本地分支 四、gitflow分支管理策略分支定义gitflow分支管理策略评价 五、GITHUB FLOW分支管理策略分支使用流程创建分支&#xff08;Create a branch&#xff09;新增提交(add and commit)提出 Pull 请求&…

机器人客服系统的接待模式

机器人客服接待模式 人工接待 没有机器人回复&#xff0c;人工客服回复 机器人接待 先机器人接待自动回复&#xff0c;可转接人工后&#xff0c;人工接待回复 可以设置机器人无法回答时的语句 可以设置多个转接人工的关键词 机器人人工接待 机器人自动回复和人工一块接待…

自己开发的软件中微信登录无法跳转怎么办?

微信登录是许多应用程序中比较常用的登录方式之一&#xff0c;但是在自己开发的软件中&#xff0c;有的时候可能会遇到微信登录无法跳转的问题。这会影响用户体验和应用程序的功能。下面简单的提供一些解决方法帮助你解决这个问题。 确认微信登录SDK的正确集成 正确地集成了微…