nowcoder 五 C
連結:https://www.nowcoder.com/acm/contest/77/C
來源:牛客網
題目描述
有一個字串 讓你找到這個字串 S 裡面的子串T 這個子串 T 必須滿足即使這個串的字首 也是這個
串的字尾 並且 在字串中也出現過一次的(提示 要求滿足前字尾的同時也要在字串中出現一次 只是前字尾可不行 輸出最長滿足要求字串)
串的字尾 並且 在字串中也出現過一次的(提示 要求滿足前字尾的同時也要在字串中出現一次 只是前字尾可不行 輸出最長滿足要求字串)
輸入描述:
給出一個字串 長度 1 到 1e6 全部是小寫字母
輸出描述:
如果找的到就輸出這個子串T 如果不行就輸出 Just a legend
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000000
string str;
int nex[maxn];
int s=0;
void get_nex(){ //獲得next 陣列
nex[0]=-1;
int k=-1,j=0;
while(j<s){
if(k==-1||str[j]==str[k]){
j++;
k++;
nex[j]=k;
}
else k=nex[k];
}
}
bool kmp(int len){ //kmp字串匹配
for(int i = 1, j = 0; i < s-1; i++){
while(j > 0 && str[i] != str[j]) j = nex[j];
if(str[i] == str[j]) j++;
if(j == len) return true;
}
return false;
}
bool xxx(int len){ //獲取長度
for(int j=0;j<len;j++){
if(str[j]!=str[s-len+j]) return false;
}
return true;
}
bool work(){
for(int j=s-2;j>=1;j--){
//if(j==3) cout<<xxx(j)<<endl;
if(xxx(j)){
if(kmp(j)){
for(int k=0;k<j;k++){
cout<<str[k];
}
return true;
}
}
}
return false;
}
int main(){
cin>>str;
s=str.size();
get_nex();
if(!work()){
cout<<"Just a legend"<<endl;
}
return 0;
}
相關文章
- nowcoder 道路建設
- nowcoder Week Contest
- nowcoder 常州大學 新生 I
- nowcoder 牛客練習賽9 B
- 【NowCoder】演算法補全計劃演算法
- C++學習五C++
- Nowcoder Girl 2017題目集合詳解
- C++ 四捨五入與不四捨五入C++
- 五、Object-C 類NSObjectObject
- c++學習筆記(五)C++筆記
- nowcoder-劍指offer-二維陣列的查詢陣列
- C++之父:C++ 的五個普遍誤解(3)C++
- C++之父:C++ 的五個普遍誤解(1)C++
- Hadoop(五)C#連線HiveHadoopC#Hive
- C++第五次作業C++
- Oracle 12c系列(五)|PDB RefreshOracle
- 【Contest】Nowcoder 假日團隊賽1 題解+賽後總結
- iphone5c的五種顏色iPhone
- C#速成(之五)全文完 (轉)C#
- C#+OpenCV基礎(五)_新增邊框C#OpenCV
- kingofark的第1個五評計劃 - 五評C++(1) (轉)GoC++
- C語言五子棋小遊戲C語言遊戲
- 用C#寫一個記事本五C#
- C++物件導向五子棋C++物件
- C# 單例模式的五種寫法C#單例模式
- C語言第五篇:位運算C語言
- 重學c#系列——非託管例項(五)C#
- 小豬的C語言快速入門系列(五)C語言
- C++ 的五個普遍誤解(2):垃圾回收C++
- C++知識點隨筆(五):虛繼承C++繼承
- 第五天(objective-c)(類和物件)Object物件
- 暫別C++ Primer第五版C++
- C#簡明教程(五)-資料型別 (轉)資料型別
- C語言中四捨五入問題總結C語言
- c語言程式實驗——實驗報告五C語言
- C Primer Plus (第五版) 第五章 程式設計練習 答案程式設計
- C# vs Java:C# 五個不可替代的特性瞬間秒殺 JavaC#Java
- c# 操作Redis的五種基本型別總結C#Redis型別