21xrx.com
2024-12-22 20:58:13 Sunday
登录
文章检索 我的文章 写文章
C++实现回文判断
2023-07-14 19:31:29 深夜i     --     --
C++ 回文 判断

回文指的是从左到右和从右到左都能读取相同的字符序列。比如“level”和“dood”都是回文。在编程中,判断一个字符串是否回文是很常见的操作,这里介绍使用C++实现回文判断的方法。

方法一:双指针法

双指针法是最简单、最常用的判断回文的方法。该方法利用两个指针分别从头尾开始扫描字符串,如果扫描到字符不相等,则字符串不是回文。代码如下:


bool isPalindrome(string s) {

  int left = 0, right = s.length() - 1;

  while (left < right) {

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

      return false;

    

    left++;

    right--;

  }

  return true;

}

方法二:递归法

递归法也可以用来判断回文。该方法将问题递归到字符串的首尾两个字符是否相等,并去掉这两个字符后的子字符串是否回文,直到字符串为空或只有一个字符为止。代码如下:


bool isPalindrome(string s) {

  if (s.empty() || s.length() == 1)

    return true;

  

  if (s[0] != s[s.length() - 1])

    return false;

  

  return isPalindrome(s.substr(1, s.length() - 2));

}

方法三:STL法

C++标准库中的reverse()函数可以将一个字符串反转。如果反转后的字符串和原字符串相等,则字符串是回文。代码如下:


bool isPalindrome(string s) {

  string r = s;

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

  return s == r;

}

以上就是使用C++实现回文判断的三种方法。其中双指针法最简单,递归法最难理解,STL法最简洁。开发者可以根据需要选择适合自己的方法。

  
  

评论区

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