首页 > 其他分享 >重复子字符串

重复子字符串

时间:2023-05-06 16:25:15浏览次数:29  
标签:周期 int 重复子 len next 字符串 长度 size

应用KMP算法

最长相等前后缀不包含的子串就是最小重复子串。

 

len=s.size();

如果len % (len - (next[len - 1] )) == 0 

数组长度减去最长相同前后缀的长度相当于是第一个周期的长度,也就是一个周期的长度,如果这个周期可以被整除,就说明整个数组就是这个周期的循环

 此图为-1,如果从0开始则全部加1

class Solution {
public:
            void getnext(int *next,const string& s)
        {
            int j=0;//第一步,初始化
            next[0]=j;

            for(int i=1;i<s.size();i++)
            {
                while(j>0 && s[i]!=s[j])//第二步,不相等则回退
                {
                    j=next[j-1];
                }

                if(s[i]==s[j])//第三步,相等则加1
                {
                    j++;
                }

                next[i]=j;
            }
        }

    bool repeatedSubstringPattern(string s) {
        int len=s.size();
        int next[len];

        getnext(next,s);

        if(next[len-1]!=0 && len % (len-(next[len-1]))==0)
        {
            return true;
        }

            return false;

        

    }
};

 

标签:周期,int,重复子,len,next,字符串,长度,size
From: https://www.cnblogs.com/gaishuobulao/p/17377746.html

相关文章

  • GaussDB(DWS)字符串处理函数返回错误结果集排查
    摘要:在使用字符串处理函数时,有时会出现非预期结果的场景。在排除使用问题后,应该从encoding和数据本身开始排查。本文分享自华为云社区《GaussDB(DWS)字符串处理函数返回错误结果集排查》,作者:-CHEN111-。在使用字符串处理函数时,有时会出现非预期结果的场景。在排除使用问题后,应......
  • 实现字符串的拼接---Java
    定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回调用此方法,并在控制台输出结果 例如: 数组为:int[]arr={1,2,3}; 执行后输出结果为:[1,2,3]packagestring.practice;/**实现字符串的拼接*定义一个方法,把int数组中的数据按照指定的格式拼接成一个字......
  • shell jq处理json字符串
    1.1工具介绍自己用shell处理json字符串的时候,开发输入格式的不通会导致解析字符串有问题,所以这里用到了jq工具jq是一款命令行下处理JSON数据的工具。其可以接受标准输入,命令管道或者文件中的JSON数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将......
  • Java中对比两个字符串的相似度
    Java中对比两个字符串的相似度的方法,以下整理了两个方式比对方法,同样的字符串不同的计算方式得到的结果也是不同的:packagetest;/***对比俩个字符串的相似度*@authorsanshi*/publicclassStrUtil{/***获取最长子串(参数顺序与字符串长短无关)......
  • 常用的截取字符串方法JS和Golang实现
    JS中截取字符串很简单,直接使用substr函数substr()方法可在字符串中截取从开始下标开始的指定数目的字符。下标是从0开始算例如:"21".substr(0,1)  返回2golang实现的substr//截取字符串,支持多字节字符//start:起始下标,负数从从尾部开始,最后一个为-1//length:截取长度,......
  • 提取最新的各国疫情数据中json字符串
    1.正则表达式提取json字符串:   -----------------------------------------------------------------初始数据-----------------------------------------------------------------try{window.fetchIndexMallList={"success":true,"errorCode":0,"result......
  • 1 字符串 、2 指针 、3 结构体 、4 方法、 5 接口
    目录1字符串2指针3结构体4方法5接口1字符串packagemain//字符串funcmain(){ //1定义字符串 //vars="中alqz" //2字符串可以按下标取值,不能改 //s[0]=98 //fmt.Println(s[0])//取字节,是个数字 //fmt.Println(s[3]) //fmt.Printf("%T\n",s[3])/......
  • 【Java】对pdf表格中的字符串进行换行处理
    需求:将数据库查出来的字符串数组放入pdf的表格中,并且每个字符串单独占一行解决:1、尝试在字符串后面加上/r或/n无效:只会在两个字符串之间加上一个空格 2、尝试在字符串后面加上/br无效,无法识别/br,只会识别成/b与字符串r 3、尝试使用第三方库的方法(成功)三方库为:com.i......
  • 金仓数据库字符串分割函数
    1.SPLIT_PARTSPLIT_PART()函数通过指定分隔符分割字符串,并返回第N个子串。语法:SPLIT_PART(string,delimiter,position)11、string:待分割的字符串2、delimiter:指定分割字符串3、position:返回第几个字串,从1开始,该参数必须是正数。如果参数值大于分割后字符串的数量,函数返回......
  • IP地址字符串转数组
    查看代码staticuint8_tip_buf[4];staticuint8_ttest_str[]="192.168.1.123";staticuint8_tipstr2num(uint8_t*src_str);voidipstr2num(uint8_t*src_str){inti=0,j=0,k=0;charnew_str[3];while(*src_str!='\0'......