NC53679. 「水」悠悠碧波
描述
帕秋莉掌握了一种水属性魔法
这种魔法可以净化黑暗
帕秋莉发现对于一个黑暗的咒语s,可以使用这个水元素魔法净化它,净化的咒语是一个最长的字符串t,t满足以下条件:
它是s的前缀
它是s的后缀
除前缀和后缀外,它还在s中出现过至少一次
既然你都学会了,那么净化的工作就交给你了!
输入描述
一行字符串 s ,代表黑暗咒语
输出描述
一个字符串 t ,表示满足条件的最长净化咒语
示例1
输入:
tqrwantoacthisproblembutqristooweaktodoitqr
输出:
tqr
C++14(g++5.4) 解法, 执行用时: 91ms, 内存消耗: 660K, 提交时间: 2020-07-07 19:05:03
#include<bits/stdc++.h> using namespace std; string s; int main() { cin>>s; string t; int n=s.size(); for(int i=1;i<=n/3;i++) { string a=s.substr(0,i);string b=s.substr(i,n-2*i);string c=s.substr(n-i,i); if(a==c&&b.find(a)!=b.npos) { t=a; } } cout<<t<<endl; }
C++11(clang++ 3.9) 解法, 执行用时: 102ms, 内存消耗: 784K, 提交时间: 2020-07-14 15:15:45
#include<bits/stdc++.h> using namespace std; string s; int main() { cin>>s; string t; int n=s.size(); for(int i=1;i<=n/3;i++) { string a=s.substr(0,i); string b=s.substr(i,n-2*i); string c=s.substr(n-i,i); if(a==c&&b.find(a)!=b.npos) t=a; } cout<<t<<endl; }
Python3(3.5.2) 解法, 执行用时: 324ms, 内存消耗: 3832K, 提交时间: 2020-07-07 19:24:46
s = input().strip() n = len(s) m = n // 2 for i in range(n): if s[:i] == s[n-i:] and s[:i] in s[i:n-i]: res = s[:i] print(res)