以下是C++的代码实现:

#include <iostream>
#include <string>
using namespace std;

bool isPalindrome(string str) {
    int left = 0, right = str.length() - 1;
    while (left < right) {
        if (str[left] != str[right]) {
            return false;
        }
        left++;
        right--;
    }
    return true;
}

void printPalindromes(string num) {
    for (int i = 0; i < num.length(); i++) {
        for (int j = 2; j <= num.length() - i; j++) {
            string substr = num.substr(i, j);
            if (isPalindrome(substr)) {
                cout << substr << endl;
            }
        }
    }
}

int main() {
    string num;
    cin >> num;
    printPalindromes(num);
    return 0;
}

该程序首先定义了一个函数isPalindrome,用于判断一个字符串是否为回文串。该函数通过双指针法从字符串的两端向中间遍历,如果发现两个指针指向的字符不相等,则返回false;如果遍历结束后没有发现不相等的字符,则返回true

接下来,定义了一个函数printPalindromes,用于打印给定字符串的所有回文串。该函数通过两层循环遍历字符串的所有子串,然后调用isPalindrome函数判断是否为回文串,如果是则打印该子串。

main函数中,首先读入一个最多250位的数,并调用printPalindromes函数打印所有的回文串。


原文地址: https://www.cveoy.top/t/topic/pRmy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录