免费领手机 网站,石家庄计算机培训机构,小手工,怎样在网站上做营业执照公示描述
给定一个字符串#xff0c;输出所有长度至少为2的回文子串。
回文子串即从左往右输出和从右往左输出结果是一样的字符串#xff0c;比如#xff1a;abba#xff0c;cccdeedccc都是回文字符串。
输入
一个字符串#xff0c;由字母或数字组成。长度500以内。
输出…描述
给定一个字符串输出所有长度至少为2的回文子串。
回文子串即从左往右输出和从右往左输出结果是一样的字符串比如abbacccdeedccc都是回文字符串。
输入
一个字符串由字母或数字组成。长度500以内。
输出
输出所有的回文子串每个子串一行。 子串长度小的优先输出若长度相等则出现位置靠左的优先输出。
样例输入
123321125775165561
样例输出
33
11
77
55
2332
2112
5775
6556
123321
165561
#include stdio.h
#include string.hchar s[505]; // 定义字符数组s用于存储输入的字符串
int len; // 定义整型变量len用于存储字符串的长度// 判断从st开始长度为l的子串是否为回文串
int isPalin(int st, int l) {for (int i st, j st l - 1; i j; i, --j) { // 使用双指针法分别从子串的首尾向中间遍历if (s[i] ! s[j]) // 如果发现不相等的字符则返回0表示不是回文串return 0;}return 1; // 如果所有字符都相等则返回1表示是回文串
}// 输出从st开始长度为l的子串
void show(int st, int l) {for (int i st; i st l - 1; i) // 遍历子串中的每个字符printf(%c, s[i]); // 输出字符printf(\n); // 输出换行符
}int main() {scanf(%s, s); // 读取输入的字符串len strlen(s); // 计算字符串的长度for (int l 2; l len; l) { // 遍历所有可能的子串长度for (int i 0; i len - l; i) { // 遍历所有可能的子串起始位置if (isPalin(i, l)) // 如果当前子串是回文串show(i, l); // 输出子串}}return 0; // 程序正常结束
}