21xrx.com
2025-06-04 06:19:46 Wednesday
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文字符串?
2023-07-01 21:07:47 深夜i     14     0
C++ 判断 字符串 回文字符串

回文字符串是一种非常特殊的字符串,它满足从左往右读和从右往左读都是一样的。在C++中,我们可以利用一些字符串操作来判断一个字符串是否是回文字符串。

首先,我们可以使用C++中的字符串反转函数reverse()来将原始字符串翻转,然后再和原始字符串进行比较,如果它们相等,那么原始字符串就是一个回文字符串。下面是代码实现:

#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str) {
  string rev_str = str;
  reverse(rev_str.begin(), rev_str.end());
  if (rev_str == str)
    return true;
   else
    return false;
  
}
int main() {
  string str = "racecar";
  if (isPalindrome(str))
    cout << str << " is a palindrome." << endl;
   else
    cout << str << " is not a palindrome." << endl;
  
  return 0;
}

上述代码中,我们定义了一个isPalindrome()函数,它接收一个字符串作为参数。我们使用字符串反转函数reverse()将原始字符串进行翻转。然后,我们将翻转后的字符串与原始字符串进行比较,如果它们相等,那么原始字符串就是一个回文字符串,返回true;否则,返回false。

在main()函数中,我们定义了一个回文字符串"racecar",并调用isPalindrome()函数来判断它是否是回文字符串。结果显示它是一个回文字符串。

除此之外,我们还可以使用两个指针对原始字符串进行比较。一个指针从左边开始遍历字符串,另一个指针从右边开始遍历字符串。我们比较两个指针指向的字符是否相等,如果它们相等,两个指针都向中间移动一位。这个过程重复进行,直到两个指针相遇或者不相等。如果两个指针相遇,那么原始字符串就是一个回文字符串,否则,它不是一个回文字符串。下面是代码实现:

#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str) {
  int left = 0, right = str.length() - 1;
  while (left < right) {
    if (str[left] != str[right])
      return false;
    
    left++;
    right--;
  }
  return true;
}
int main() {
  string str = "racecar";
  if (isPalindrome(str))
    cout << str << " is a palindrome." << endl;
   else
    cout << str << " is not a palindrome." << endl;
  
  return 0;
}

通过上述方法,我们可以轻松判断一个字符串是否是回文字符串,无论是使用反转函数还是指针比较法。这些方法都是常用的字符串操作,如果您需要操作字符串,可以参考这些方法。

  
  

评论区