題目描述
給定乙個字串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
fixjust 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...