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

重复的子字符串

时间:2024-01-14 11:13:15浏览次数:45  
标签:string 重复 len next int 字符串 size


最开始想的是暴力解法,但总是超时,后来问了chatgp,可以通过用substr来缩短时间。勉强通过,耗时还是很大。

点击查看代码
class Solution {
public:
    bool repeatedSubstringPattern(string s) {
int count=1;
string temp;
while(count<=s.size()/2){
   temp=s.substr(0,count);
    if(s.size()%temp.size()==0){
   
   int i=0;int j=0;
for(i=count;i<s.size();i+=count){
    for(j=0;j<temp.size();j++){
        if(s[i+j]!=temp[j]){break;}
    }
    if(j!=temp.size()){break;}
}
if(i==s.size()){return true;}
    }
++count;
temp.clear();
}
return false; 
    }
};
看了卡哥的方法,最关键的就是要知道重复子字符串的长度应该为字符串减去公共前后缀部分的长度。 了解了kmp三种实现方法,还是原始的那种最适合。
点击查看代码
class Solution {
public:
void getnext(int *next,const string& s){
    int j=-1;
    next[0]=j;
    for(int i=1;i<s.size();i++){
        while(j>=0&&s[i]!=s[j+1]){
            j=next[j];
        }
        if(s[i]==s[j+1]){++j;}
        next[i]=j;
    }
}
    bool repeatedSubstringPattern(string s) {
int next[s.size()];
getnext(next,s);
int sz=next[s.size()-1]+1;
int len=s.size();
int k=len-sz;
if(next[len - 1] != -1&&len%k==0){return true;}
else{return false;}
    }
};

标签:string,重复,len,next,int,字符串,size
From: https://www.cnblogs.com/yun-che/p/17963452

相关文章

  • 使用RanDom生成不重复的随机数
    首先看一下关键词的傻瓜讲解Random用法Random.Next()返回非负随机数;Random.Next(a)返回一个小于a的非负随机数Random.Next(a,b)返回一个大于a小于b的非负随机数contains用法list.Contains(a)判断列表list里是否含有a,有则返回true接下来看代码staticvoidMain(string[]args)......
  • 反转字符串中的单词
    最开始我是用笨方法解决的,就是新建了一个字符串,不断增加限制条件来实现的。点击查看代码classSolution{public:stringreverseWords(strings){stringtemp;stringcnt;intsz=s.size();intj=0;for(inti=sz-1;i>=0;i--){if(s[i]!=''){temp.push......
  • C++实现文件内查找字符串
    实现概要:读取放入buf后查找匹配的第一个字符然后使用seek()移动文件指针,peek()查看剩余的字符是否匹配如果剩余的字符匹配把该字符串在文件中的位置push进一个vector<int>中再继续查看剩余的文件内容//str2.cpp--capacity()andreserve()#include<iostream>......
  • openpyxl模块--------------------------------重复数据
    测试数据 上代码:fromopenpyxlimportload_workbookfromopenpyxl.stylesimportPatternFilldefdum():wb=load_workbook("C:/Users/admin/Desktop/打卡时间.xlsx")sh=wb.active##存储哪一行的重复数据index=[]tmp=[]#没有重复的数据for......
  • 【教3妹学编程-算法题】构造限制重复的字符串
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥:3妹,什么事呀这么开森。3妹:2哥你看今天的天气多好啊,最近一周都是大晴天,艳阳高照2哥:是啊,天气不冷不热的,很适合生活3妹:据说南方的小土豆都跑到北方滑雪了,哈哈哈哈2哥:泼水成冰好玩是好玩,但是一定要注意防寒哦,看新闻都有......
  • 十行python代码实现文件去重,去除重复文件的脚本
    1.导入依赖'''导入依赖'''frompathlibimportPathimportfilecmp2.函数说明filecmp.cmp(path1,path2,shallow=True)path1/path2:待比较的两个文件路径。shallow:默认为True,即只比较os.stat()获取的元数据(创建时间,大小等信息)是否相同,设置为False的话,在对比文件的......
  • SQL SERVER日期时间转字符串
    SQLSERVER日期时间转字符串一、sql server日期时间函数--当前系统日期、时间selectgetdate()--dateadd在向指定日期加上一段时间的基础上,返回新的datetime值--例如:向日期加上2天selectdateadd(day,2,'2004-10-15')--返回:2004-10-1700:00:00.000--datediff......
  • #yyds干货盘点# LeetCode程序员面试金典:至少有 K 个重复字符的最长子串
    题目给你一个字符串s和一个整数k,请你找出s中的最长子串,要求该子串中的每一字符出现次数都不少于k。返回这一子串的长度。如果不存在这样的子字符串,则返回0。 示例1:输入:s="aaabb",k=3输出:3解释:最长子串为"aaa",其中'a'重复了3次。示例2:输入:s="aba......
  • 【教3妹学编程-算法题】统计出现过一次的公共字符串
    3妹:哈哈哈哈哈哈,太搞笑了~呵呵呵呵呵呵2哥:3妹干嘛呢,笑的这么魔性!3妹:在看王牌对王牌,老搞笑了2哥:这季好像没有贾玲吧。3妹:是啊,听说贾玲去导电影了,还狂瘦了100斤呢,哎,我也该减减肥了。2哥:切,你每隔几天就会说要减肥,也没见你减啊3妹:不吃饱哪有力气减肥,我每天还要刷题、找工作,多辛苦啊......
  • 筛选列表中的元素 与 删除元素中的字符串 的区别
    字符串分割为列表re.split(pat,string)pandas.Series([string]).astype(str).str.split(pat)先删除字符串首尾字符串,再分隔re.split(pat,string2.sptrip())先删除字符串中的字符串,再分隔re.split(pat,string.replace(string2,"")筛选列表中的元素[itemforiteminlisif......