DS 字串迴圈問題

2021-10-25 07:47:32 字數 809 閱讀 3077

題目描述

給定乙個字串,求需要新增至少幾個字元到字串末尾才能使得整個字串串由某乙個不為本身的子串迴圈構成?

如"abca",新增"bc"後構成"abcabc",其由子串"abc"迴圈構成;也可以新增"abca"後構成"abcaabca",其由子串"abca"迴圈構成,相比之下"bc"只有2個字元,新增的字元量最少。

輸入

第一行包括乙個整數t(1 <= t <= 100),代表測試組數

每組測試資料報括一行字串,其長度範圍為 [3, 104]

輸出

對於每組測試資料

輸出乙個整數n,代表新增的最小字元數量

樣例輸入

3

aaaabca

abcdefg

樣例輸出

0

27

實現**:

#include

#include

using

namespace std;

void

getnext

(string p,

int next)

else

j = next[j];}

}int

main()

;int num, len;

while

(t--

)return0;

}

DS 字串操作

本週資料結構講了字串 作業不是很難,只寫了一中午 主要是利用製表的思路減少遍歷次數 要讓演算法有記憶?刪除s中所有ch 編寫效率盡量高的函式刪除s中所有值為ch的字元 include include using namespace std void del char s,char ch i 0 j ...

字串 迴圈移位問題

字串迴圈移位問題是面試中比較容易遇到的,就是輸入乙個字串和乙個整數,原地輸出移位後的字串。不同的考官可能對程式的具體要求不同,這裡要求空間複雜度為o 1 這裡給出兩種解答方法。1 將移動n位看做 每次移動一位,共操作n次 這是一種化整為零的思維方法。只要能想到這一步,相信下面的 就不難寫出了 1 v...

字串迴圈左移問題

給定乙個字串s 0.n 1 要求把s的前i個字元移動到s的尾部,例如 把字串 imnliki 前面的2個字元 i m 移動到字串的尾部,得到新字串 nlikiim 即字串迴圈左移i。演算法要求 時間複雜度為o n 空間複雜度為o l 不是字串 char s 8 是字串 char s imnliki ...