21xrx.com
2024-12-22 22:08:05 Sunday
登录
文章检索 我的文章 写文章
C++实现回文判断
2023-07-11 10:25:03 深夜i     --     --
C++ 回文 判断 实现

回文是指正着读和倒着读都一样的字符串,例如“level”、“racecar”等。在程序设计中,判断一个字符串是否是回文是一个常见的问题。在C++中,我们可以使用多种算法来实现回文判断,下面我们就来介绍一些常用的算法。

1.反转字符串法

这种方法是将原字符串反转之后再判断是否与原字符串相同。具体实现可以使用C++中的reverse函数。


#include <iostream>

#include <algorithm>

using namespace std;

int main() {

  string s = "level";

  string r = s;

  reverse(r.begin(), r.end());

  if (s == r)

    cout << s << " is palindrome" << endl;

  

  return 0;

}

2.双指针法

双指针法是将指针指向字符串的首尾,判断两个指针所指的字符是否相同,如果相同则将指针向内移动,否则直接返回不是回文。具体实现可以使用如下代码:


#include <iostream>

#include <algorithm>

using namespace std;

int main() {

  string s = "level";

  int l = 0, r = s.length() - 1;

  while (l < r) {

    if (s[l] != s[r])

      cout << s << " is not palindrome" << endl;

      return 0;

    

    l++;

    r--;

  }

  cout << s << " is palindrome" << endl;

  return 0;

}

3.递归法

递归法是将字符串首尾字符相比较,如果相同则递归比较中间的子串是否回文,否则直接返回不是回文。具体实现可以使用如下代码:


#include <iostream>

#include <algorithm>

using namespace std;

bool isPalindrome(string s, int l, int r) {

  if (l >= r)

    return true;

  

  if (s[l] != s[r])

    return false;

  

  return isPalindrome(s, l + 1, r - 1);

}

int main() {

  string s = "level";

  if (isPalindrome(s, 0, s.length() - 1))

    cout << s << " is palindrome" << endl;

   else

    cout << s << " is not palindrome" << endl;

  

  return 0;

}

以上是C++实现回文判断的三种方法,不同的方法有着不同的适用场景,我们可以根据需要选择最合适的算法实现回文判断。

  
  
下一篇: C++ 复数加法

评论区

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