hust 1589 找出子串

2022-06-02 16:33:09 字數 1044 閱讀 8232

題目描述

給定乙個字串s

,求出乙個子串t,滿足如下性質:

1.       t是s的乙個字首。

2.       t是s的乙個字尾。

3.       t出現在s的中間(並非字首和字尾)。

例如:字串s為fixprefixsuffix,t可以是fix。

字串s為aaa,t可以是aa。

輸入輸入包括多組資料,每組資料為一行,每行有乙個字串s,其長度不超過10^6(一百萬)。

輸出每組資料輸出一行,每行為乙個字串t,若不存在字串t,則輸出"just a legend"(不包括引號)。樣例輸入

fixprefixsuffix

abcdabc

樣例輸出

fix

just a legend

很經典的一道kmp演算法題目,求是字首又是字尾的字串,再判斷是否出現在中間,很簡單,有kmp判斷,再用dp判斷是否出現的次數大於2,這樣就可以了,

題目aaa那個不對,還有就是這個題要求輸出最長的,題目沒有說清楚,wa了兩次,真是暈

#include#include

#include

#include

using

namespace

std;

const

int maxn=1000000+10

;char

p[maxn];

intf[maxn],dp[maxn],a[maxn];

void

getf()

}int

main()

//for (int i=0;i//

printf("\n");

for (int i=l;i>=0;i--)

flag=false

;

for (int i=0;i)

}if (!flag) printf("

just a legend\n");

}return0;

}

作者 chensunrise

找出字串中最長的子串

include includevoid fun1 char a int main void puts bye return 0 void fun1 char p unsigned int i unsigned int len word unsigned int len max 0 unsigned ...

找出字串中最長的子串

include includevoid fun1 char a int main void puts bye return 0 void fun1 char p unsigned int i unsigned int len word unsigned int len max 0 unsigned ...

找出字串的所有子字串

字首樹實現,遍歷字串。把字串中的每乙個字元都視為字首,用乙個字首樹儲存以每乙個字元為開頭的字串 舉例為 abbc 然後遍歷字首樹,把每個子樹的每一層都作為乙個字串輸出即可。import copy class trienode object def init self,word self.word w...