21xrx.com
2025-07-08 22:55:50 Tuesday
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文
2023-06-22 20:57:37 深夜i     83     0
C++ 回文 字符串 判断

回文是指一个字符串正着读和倒着读都一样,例如"level"和"racecar"。在C++中,要判断一个字符串是否为回文,可以使用两种方法。

方法一:逆转字符串后比较

将原字符串逆转,然后和原字符串比较,如果相同就说明是回文。可以使用C++中的reverse函数逆转字符串,代码如下:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool isPalindrome1(string str)
{
  string rev_str = str;
  reverse(rev_str.begin(), rev_str.end()); // 逆转字符串
  if (str == rev_str)
    return true; // 原字符串等于逆转后的字符串,是回文
  else
    return false; // 不是回文
}
int main()
{
  string str;
  cin >> str; // 输入要判断的字符串
  if (isPalindrome1(str))
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}

方法二:前后对比

从字符串的两端开始遍历,依次比较对应位置的字符是否相同,如果都相同就说明是回文。代码如下:

#include <iostream>
#include <string>
using namespace std;
bool isPalindrome2(string str)
{
  int len = str.length();
  for (int i = 0; i < len / 2; i++)
  {
    if (str[i] != str[len - 1 - i])
      return false; // 不是回文
  }
  return true; // 是回文
}
int main()
{
  string str;
  cin >> str; // 输入要判断的字符串
  if (isPalindrome2(str))
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}

无论采用哪种方法,判断一个字符串是否为回文都需要遍历整个字符串,时间复杂度为O(n),n为字符串的长度。

  
  

评论区