problem:1318
time limit:1000ms
memory limit:65535k
給出字串 s,求出串s的所有字首中,是週期串的字首的長度 len 和他的最大重複週期 k
多組樣例。對於每組樣例
第一行輸入串長 n (2<=n<=1e6)
第二行輸入串 s
對於所有的s,長度和小於1e7
對於s中是週期串的字首要求輸出 k>1 的字首的長度 len 和最大重複週期 k
每乙個長度和週期用乙個空格分開。
3aaa12
aabaabaabaab
2 23 32 2
6 29 3
12 4
對於第一組樣例 3 aaa對於字首 'a' len = 1 ,k 最大為 1 不符合要求
對於字首 'aa' len = 2 ,k 最大為 2 週期串為 'a'
對於字首 'aaa' len = 3 ,k 最大為 3 週期串為 'a'
對於第二組樣例 12 aabaabaabaab
對於字首 'aa' len = 2 ,k 最大為 2 週期串為 'a'
對於字首 'aabaab' len = 6 ,k 最大為 2 週期串為 'aab'
對於字首 'aabaabaab' len = 9 ,k 最大為 3 週期串為 'aab'
對於字首 'aabaabaabaab' len = 12 ,k 最大為 4 週期串為 'aab'
dt2131
題意:中文題。
思路:用kmp求出next陣列。然後從前往後搜,對於每乙個i來說,週期都為i+1-next[i]。當週期能整除長度並且字首長度不為1的時候,那麼就輸出長度和最大重複週期。
**:#include #include #include #include using namespace std;
char t[1000005];
int ne[1000005];
char p[1000005];
void makenext(const char p,int ne,int len)
}int main()
{ int len;
while(~scanf("%d",&len))
{scanf("%s",t);
makenext(t,ne,len);
for(int i=0;i
JS字串常用方法(自) 3 字串重複
字串重複的函式是repeat 作用是對字串進行重複,引數是count 重複次數 返回值是成功操作的字串。repeat 作用 對字串進行重複 引數 count 重複次數 返回值 重複操作之後的字串 console.log abc repeat 2 abcabc 1 doctype html 2 htm...
2 6 字串找到字串的最長無重複子串
給定乙個字串str,返回str的最長無重複子串的長度。分析 1 滑動視窗 如何確定滑動視窗的首尾,2 實現 public intgetmaxnorepeat string str char chas str.tochararray int map newint 256 int pre 1 用於儲存最...
字串1 字串的旋轉
題目描述 給定乙個字串,要求將字串前面的若干個字元移到字串的尾部。例如 將字串 abcdef 的前三個字元 a b c 移到字串的尾部,那麼原字串將變成 defabc 首先想到的是將需要移動的字元乙個乙個移到字串的尾部。實現如下 public class transfet s n 1 t publi...