21xrx.com
2024-11-22 08:22:19 Friday
登录
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文字符串?
2023-07-01 21:07:47 深夜i     --     --
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;

}

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

  
  

评论区

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