21xrx.com
2024-09-19 09:27:09 Thursday
登录
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文
2023-06-22 20:57:37 深夜i     --     --
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为字符串的长度。

  
  

评论区

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