1 条题解

  • 0
    @ 2025-8-24 22:32:04

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 落河之秋
    我仍然在 无人问津的阴雨霉湿之地 和着雨音 唱着没有听众的歌曲

    搬运于2025-08-24 22:32:04,当前版本为作者最后更新于2021-07-19 16:26:24,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题意

    给出 nn 个长度为奇数的字符串,求出一对互为回文的串并输出其长度及中央字符。特别地,如果其本身为一个回文串也计入答案。

    分析

    • 我们可以建立一个 string 类型与 int 类型相互映射的 map 来模拟,如果其回文串出现次数不为零,则输出结果并结束程序。

    • 由于我们计入的是次数,所以并不需要特判本身为回文串的情况,因为在读入原串时已经记录过出现次数了。

    代码

    #include <string>
    #include <map>
    #include <iostream>
    
    using namespace std;
    
    map <string,int> a;
    int n;
    string s[101];
    
    string fz(string sample) //判断回文
    {
    	for(long long i = 0; i < sample.size() / 2; i++)
    	{
    		swap(sample[i],sample[sample.size() - i - 1]);
    	}
    	
    	return sample;
    }
    
    int main()
    {
    	cin>>n;
    	
    	for(int i = 1; i <= n; i++)
    	{
    		cin>>s[i];
    		
    		a[s[i]]++; //计入次数
    	}
    	
    	for(int i = 1; i <= n; i++)
    	{
    		if(a[fz(s[i])] > 0) //出现次数不为零
    		{
    			cout<<s[i].size()<<" "<<s[i][s[i].size() / 2];
    			return 0;
    		}
    	}
    }
    
    • 1

    信息

    ID
    6865
    时间
    1000ms
    内存
    32MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者