21xrx.com
2024-11-22 08:05:31 Friday
登录
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文字符串
2023-07-04 19:42:25 深夜i     --     --
C++ 字符串 回文字符串 判断 算法

回文字符串是指正着读和倒着读都一样的字符串。在C++中,我们可以使用以下方法判断一个字符串是否为回文字符串。

首先,我们需要将字符串反转。反转字符串的方法有很多种,其中一种是使用STL中的reverse函数。代码如下:


#include <algorithm>

#include <string>

bool isPalindrome(const std::string& str)

{

  std::string reversed = str;

  std::reverse(reversed.begin(), reversed.end());

  return str == reversed;

}

上面的代码首先将原始字符串复制到一个新的字符串中,然后使用STL中的reverse函数将新字符串反转。最后,我们可以比较原始字符串和反转后的字符串是否相同,如果相同,那么该字符串就是回文字符串。

这种方法的时间复杂度为O(n),其中n为字符串的长度。

除此之外,我们还可以使用双指针法判断一个字符串是否为回文字符串。双指针法的基本思路是,使用两个指针分别从字符串的两端开始往中间移动,比较指针所对应的字符是否相同。代码如下:


bool isPalindrome(const std::string& str)

{

  int left = 0;

  int right = str.length() - 1;

  while (left < right)

  {

    if (str[left] != str[right])

    

      return false;

    

    left++;

    right--;

  }

  return true;

}

上面的代码创建了两个指针,一个指向字符串的头部,另一个指向字符串的尾部。在比较过程中,如果两个指针所对应的字符不相同,则该字符串不是回文字符串。否则,我们将两个指针都往中间移动,直到它们重合。如果字符串中的所有字符都匹配,则该字符串就是回文字符串。

这种方法的时间复杂度为O(n),其中n为字符串的长度。

总结来说,判断一个字符串是否为回文字符串,可以使用STL中的reverse函数或者双指针法。两种方法的时间复杂度都是O(n)。对于相对较小的字符串,这两种方法都是可以接受的。对于大型字符串,双指针法可能更加高效,因为它只需要遍历字符串一次。

  
  

评论区

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