列表

详情


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)

上一题