题解 P6739 【[BalticOI 2014 Day1] Three Friends】
这道题目有意思!dalao都用着hash,表示不懂,只好跟着第一篇题解的思路喽!代码量比hash少得多得多啊!
其实只要将n先除以2,前半段匹配后半段,后半段匹配前半段,注意n % 2 == 0要特判,不然会WA 3个点,0分!
#include <iostream>
#include <cstring>
using namespace std;
string s, a, b;
int main()
{
int n;
cin >> n >> s;
if(n % 2 == 0)//两个字符串加在一起加一个字符的长度只有可能是奇数
{
cout << "NOT POSSIBLE\n";
return 0;
}
int x = n / 2;
a = s.substr(0, x);//前半段
b = s.substr(n - x, x);//后半段
int l = 0;
bool f1, f2;
f1 = f2 = false;
for(int i = x; i <= n - 1 && l < x; i++)
{
if(s[i] == a[l])
{
l++;
}
}
if(l == x)//如果到最后有连续的可以匹配那就是true了
{
f1 = true;
}
l = 0;
for(int i = 0; i <= n - x - 1 && l < x; i++)
{
if(s[i] == b[l])
{
l++;
}
}
if(l == x)
{
f2 = true;
}
if(!f1 && !f2)//都不能匹配,不可能
{
cout << "NOT POSSIBLE\n";
}
else
{
if(f1 && f2 && a != b)//多种方法,因为前面和后面都匹配,注意a和b不能相等
{
cout << "NOT UNIQUE\n";
}
else
{
if(f1)
{
cout << a << endl;
}
else
{
cout << b << endl;
}
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现