C++代码实现:找出数字中的所有回文子串
以下是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 著作权归作者所有。请勿转载和采集!