![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
leetcode 1044. 最长重复子串(二分+hash / 后缀数组)
题目听说可以后缀数组,。。可我现在全都忘了,有空补(我自己都不信其实我下面这个代码TLE了,可我很无语很无语,这道题我一直没过,官方题解写成那样还好意思当官方题解,我更无语。气死我了。气死我了。气死我了。气死我了。气死我了。//这个题目错了吧,假如是返回所有的,那返回类型不该是vector<string>吗//我这个解法是返回下标最靠前的重复子串class Solution {#define ll long longpublic: int n,*a;ll mod=1LL&原创 2020-12-05 22:52:45 · 157 阅读 · 0 评论 -
leetcode 647. 回文子串(求一个字符串回文串的个数 可以重复 马拉车模板)
题目class Solution {public: int countSubstrings(string str) { int n=str.size(),*len=new int[n*2+5];char *s=new char[n*2+5]; s[0]='@'; for(int i=1;i<=2*n;i+=2) s[i]='#',s[i+1]=str[(i+1)/2-1]; s[2*n+1]='#',s[2*n+2]='*'原创 2020-12-01 00:05:15 · 83 阅读 · 0 评论 -
leetcode 767. 重构字符串(重新排布其中的字母,使得两相邻的字符不同)
题目将26个字母出现的次数放优先队列,每次取出两个出现次数最大的字母,将队列里他们的次数–。class Solution {#define pi pair<int,char>public: int vis[26]; string reorganizeString(string s) { int n=s.size(); for(char c:s) ++vis[c-'a']; priority_queue<pi>q原创 2020-11-29 19:38:26 · 1618 阅读 · 0 评论 -
leetcode 796. 旋转字符串(判断A是否可以变成B,比如12345可以变成34512 将前几个字符挪到后面 kmp模板)
题目class Solution {public: int *nex; void getnex(string s){ int i=0,k=-1;nex[0]=-1; while(i<s.size()){ if(k==-1||s[i]==s[k]) nex[++i]=++k; else k=nex[k]; } } bool rotateString(string A, s原创 2020-11-19 19:39:41 · 155 阅读 · 0 评论 -
leetcode 28. 实现 strStr() (求t串在s串第一次出现的位置 kmp水题模板无脑)
题目nex[i]:[0,i-1]前缀与后缀重合的最长前缀长度。class Solution { public int[] getNex(String s){ int[] nex=new int[s.length()+1]; int i=0,k=-1;nex[0]=-1; while(i<s.length()){ if(k==-1||s.charAt(i)==s.charAt(k)) nex[++i]=++k;原创 2020-11-13 14:10:52 · 122 阅读 · 0 评论 -
leetcode 5. 最长回文子串(返回最大回文子串(不是返回长度) manacher模板无脑)
题目先假设s下标从1开始。假如得到len[index]-1最大。str[index]=’#’ 则是 b#a#a#b,则是偶数回文串。假如中间的那个#号的下标是index,则a对应的s里面的下标为(index-1)/2.设s里面[x,y]是最长回文串。则((index-1)/2 -x+1)*2=ans,求得x=(index+1-ans)/2,则y=x+ans-1;str[index]!=’#’ 则是 b#a#b,则是奇数回文串。假如中间的那个a的下标是index,则a对应s里面的下标是inde原创 2020-11-13 14:10:21 · 66 阅读 · 0 评论