题解 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;
}
posted @   HappyBobb  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示