C++ 查找字符串中所有长度至少为 2 的回文子串
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string s, int start, int end) {
while (start < end) { // 判断是否回文
if (s[start] != s[end]) {
return false;
}
start++;
end--;
}
return true;
}
void findPalindromicSubstring(string s) {
int len = s.size();
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (isPalindrome(s, i, j)) { // 判断是否回文
cout << s.substr(i, j - i + 1) << 'n'; // 输出回文子串
}
}
}
}
int main() {
string s;
cin >> s;
findPalindromicSubstring(s);
return 0;
}
代码解释:
-
isPalindrome(string s, int start, int end)函数- 该函数用于判断一个子串是否为回文串。
- 通过两个指针
start和end从子串的两端向中间遍历,比较对应位置的字符是否相等。 - 如果所有字符都相等,则返回
true,否则返回false。
-
findPalindromicSubstring(string s)函数- 该函数用于查找字符串
s中所有长度至少为 2 的回文子串。 - 通过两层循环遍历字符串
s的所有子串。 - 对于每个子串,调用
isPalindrome函数判断是否为回文串。 - 如果是回文串,则输出该子串。
- 该函数用于查找字符串
-
main函数- 从用户输入中获取一个字符串
s。 - 调用
findPalindromicSubstring函数查找s中所有回文子串。
- 从用户输入中获取一个字符串
示例:
输入:abccba
输出:
'abcba'
'bccb'
'cc'
总结:
这段 C++ 代码实现了查找给定字符串中所有长度至少为 2 的回文子串的功能。代码逻辑清晰,易于理解,并通过示例展示了代码的使用方法。你可以根据需要修改代码,例如添加对输入字符串长度的限制,或修改输出格式等。
原文地址: https://www.cveoy.top/t/topic/oFK1 著作权归作者所有。请勿转载和采集!