C/C++语言入门——回文串练习
》》》名人说:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼
一、问题呈现
1.问题描述
Problem Description
给定一个字符串,输出所有长度至少为2的回文子串。
回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。
2.输入输出
Input
一个字符串,长度1200以内。
Output
输出所有的回文子串,每个子串一行。
子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。
3.测试样例
样例1
Sample Input
123321125775165561
Sample Output
33
11
77
55
2332
2112
5775
6556
123321
165561
样例2
Sample Input
12344321
Sample Output
44
3443
234432
12344321
二、源码实现
#include<iostream>
#include<cstring>
using namespace std;
string str;
int len;
int Palindrome(int x,int y)
{
int s = x,t = y;
while(s<=t)
{
if(str[s]!=str[t])
{
return 0;
}
s++,t--;
}
for(int i=x;i<=y;i++)
{
cout<<str[i];
}
cout<<endl;
return 0;
}
int main()
{
getline(cin,str);
len = str.size();
for(int k=1;k<len;k++)
{
for(int i=0;i<=len-k;i++)
{
Palindrome(i,i+k);
}
}
return 0;
}
三、测试图
为了使整体内容简洁,此处只展示一组测试数据结果。
2022-03-21 21:48:23 星期一
作者:月流苏(一个喜欢古诗词和编程的Coder)