21xrx.com
2024-12-26 14:37:14 Thursday
登录
文章检索 我的文章 写文章
C++实现回文子串
2023-07-01 01:17:02 深夜i     --     --
C++ 回文 子串 实现

回文子串是指正着读和倒着读都一样的字符串。例如,“racecar”、“level”都是回文子串。当提到回文子串时,许多人都会想起一个著名的算法问题——找到一个字符串中的最长回文子串。在这个问题中,我们需要判断一个字符串中是否含有回文子串,并输出最长的回文子串。

C++是一个功能强大的编程语言,可以用来解决各种算法问题,包括回文子串的问题。下面是一个使用C++实现回文子串的简单例子:


#include <iostream>

#include <string>

using namespace std;

bool isPalindrome(string s) {

  int i = 0, j = s.length() - 1;

  while (i < j) {

    if (s[i] != s[j])

      return false;

    

    i++;

    j--;

  }

  return true;

}

void findPalindromeSubstrings(string s) {

  int len = s.length();

  for (int i = 0; i < len; i++) {

    for (int j = i + 1; j <= len; j++) {

      string sub = s.substr(i, j - i);

      if (isPalindrome(sub))

        cout << sub << endl;

      

    }

  }

}

int main() {

  string s = "ababcbamadam";

  findPalindromeSubstrings(s);

  return 0;

}

在这个程序中,我们首先定义了一个名为`isPalindrome`的函数,用于判断一个字符串是否为回文子串。这个函数使用两个指针`i`和`j`来比较字符串中首位字符是否相同,如果不同则返回`false`,否则继续比较直到比较结束,并返回`true`。

接下来我们定义了一个名为`findPalindromeSubstrings`的函数,用于找到输入字符串中所有的回文子串。这个函数使用两个循环来检查输入字符串中的所有子串,并调用`isPalindrome`函数检验子串是否为回文子串。如果是,我们就输出这个子串。

最后,在主函数中,我们定义了一个字符串`s`,用于存储输入数据,并将其传递给`findPalindromeSubstrings`函数,以输出所有的回文子串。

使用这个程序,我们可以轻松地找到一个字符串中的所有回文子串,并指出这些子串是回文的。同时,如果需要找到最长的回文子串,我们可以将程序稍作修改,使其仅输出最长的回文子串即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复