21xrx.com
2024-12-22 21:15:59 Sunday
登录
文章检索 我的文章 写文章
C++中如何判断字符串是否回文
2023-07-04 20:41:39 深夜i     --     --
C++ 字符串 回文 判断

在C++中,我们可以使用不同的方法来判断一个字符串是否是回文。要理解这些方法,首先需要了解什么是回文。

回文是一种特殊的字符串,它从前往后和从后往前读都是一样的。例如,"racecar" 和 "level" 都是回文。因此,判断一个字符串是否回文的基本思路是将其反转并与原字符串进行比较,如果两者相等,那么该字符串就是回文的。

下面介绍几种判断字符串是否回文的方法。

方法一:使用循环

我们可以使用一个循环来实现字符串反转并进行比较。具体操作是:先计算字符串的长度,然后反转字符串并将其存储在一个新的字符串变量中,最后将新的字符串与原字符串进行比较。如果它们相等,则原字符串为回文。

以下是示例代码:


#include <iostream>

#include <cstring>

using namespace std;

int main() {

 char str[100], reverse_str[100];

 int len, i, j;

 cout << "Enter a string: ";

 cin >> str;

 len = strlen(str);

 for(i = len - 1, j = 0; i >= 0; i--, j++) {

  reverse_str[j] = str[i];

 }

 reverse_str[j] = '\0';

 if(strcmp(str, reverse_str) == 0)

  cout << str << " is a palindrome" << endl;

  else

  cout << str << " is not a palindrome" << endl;

 

 return 0;

}

方法二:使用递归

我们可以使用递归来判断一个字符串是否回文。递归的基本思路是:将原字符串从两端开始进行比较,如果相等,则继续比较内部的字符串。如果不相等,则字符串不是回文。这个递归过程一直持续到字符串长度为1或0为止。

以下是示例代码:


#include <iostream>

#include <cstring>

using namespace std;

bool isPalindrome(char str[], int left, int right) {

 if(left >= right)

  return true;

 

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

  return false;

 

 return isPalindrome(str, left + 1, right - 1);

}

int main() {

 char str[100];

 cout << "Enter a string: ";

 cin >> str;

 if(isPalindrome(str, 0, strlen(str) - 1))

  cout << str << " is a palindrome" << endl;

  else

  cout << str << " is not a palindrome" << endl;

 

 return 0;

}

综上所述,以上是两种简单但有效的方法来判断一个字符串是否回文。使用循环和递归都可以实现该功能,具体取决于您的编码习惯和需求。

  
  

评论区

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