#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;
}

代码解释:

  1. isPalindrome(string s, int start, int end) 函数

    • 该函数用于判断一个子串是否为回文串。
    • 通过两个指针 startend 从子串的两端向中间遍历,比较对应位置的字符是否相等。
    • 如果所有字符都相等,则返回 true,否则返回 false
  2. findPalindromicSubstring(string s) 函数

    • 该函数用于查找字符串 s 中所有长度至少为 2 的回文子串。
    • 通过两层循环遍历字符串 s 的所有子串。
    • 对于每个子串,调用 isPalindrome 函数判断是否为回文串。
    • 如果是回文串,则输出该子串。
  3. main 函数

    • 从用户输入中获取一个字符串 s
    • 调用 findPalindromicSubstring 函数查找 s 中所有回文子串。

示例:

输入:abccba 输出:

'abcba'
'bccb'
'cc'

总结:

这段 C++ 代码实现了查找给定字符串中所有长度至少为 2 的回文子串的功能。代码逻辑清晰,易于理解,并通过示例展示了代码的使用方法。你可以根据需要修改代码,例如添加对输入字符串长度的限制,或修改输出格式等。

C++ 查找字符串中所有长度至少为 2 的回文子串

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

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