21xrx.com
2024-09-20 01:01:10 Friday
登录
文章检索 我的文章 写文章
C++如何判断一个字符串是否为回文
2023-07-04 11:05:32 深夜i     --     --
C++ 字符串 回文判断

回文是指正着读和倒着读都是一样的字符串,比如“level”、“deed”等。在C++中判断一个字符串是否为回文,有多种方法。

方法一:使用双指针

双指针法是比较常用的解决回文字符串的方法。将一个指针指向字符串的第一个字符,另一个指针指向最后一个字符。每次比较两个指针所指的字符是否相等,如果不相等,则不是回文;如果相等,则将两个指针移动向中间继续比较,直到两个指针相遇。

示例代码:

bool isPalindrome(string s) {

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

  while (left < right) {

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

      return false;

  }

  return true;

}

方法二:倒序反转字符串

将原字符串倒序反转,然后与原字符串进行比较,如果相等,则为回文。这可以通过使用reverse函数实现。

示例代码:

bool isPalindrome(string s) {

  string temp = s;

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

  return s == temp;

}

方法三:使用递归

递归也可以用于检查回文字符串。递归函数接受两个参数:指向字符串开头和结尾的指针。如果这两个字符相等,则递归继续,指针向中间移动;否则返回false。

示例代码:

bool helper(string s, int left, int right) {

  if (left >= right)

    return true;

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

    return false;

  return helper(s, left + 1, right - 1);

}

bool isPalindrome(string s) {

  return helper(s, 0, s.length() - 1);

}

以上三种方法均能判断一个字符串是否为回文,选择哪种方法主要取决于个人习惯和实际需求。无论使用哪种方法,判断回文字符串的时间复杂度均为O(n)。

  
  

评论区

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