21xrx.com
2024-11-22 09:41:21 Friday
登录
文章检索 我的文章 写文章
C++如何判断字符串是否为回文字符串
2023-06-23 03:42:30 深夜i     --     --
C++ 字符串 判断 回文字符串

回文字符串是指正序和倒序读取都相同的字符串。判断一个字符串是否为回文字符串是程序设计中常见的问题。在C++中,有多种方法可以实现这一功能。

第一种方法是利用双指针。定义两个指针,分别指向字符串的首尾字符,然后分别向中间移动,判断字符是否相等。如果相等,则继续移动;如果不相等,则说明此字符串不是回文字符串。如果最终两个指针相遇,则说明此字符串是回文字符串。代码如下:


bool isPalindrome(string s) {

  int len = s.length();

  int left = 0, right = len - 1;

  while (left < right) {

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

      return false;

    

    left++;

    right--;

  }

  return true;

}

第二种方法是利用栈。将字符串的每个字符入栈,然后再出栈,判断字符是否相等。需要注意的是,在出栈时需要从后往前判断字符串是否相等。代码如下:


bool isPalindrome(string s) {

  stack<char> st;

  for (char c : s) {

    st.push(c);

  }

  for (char c : s) {

    if (c != st.top())

      return false;

    

    st.pop();

  }

  return true;

}

第三种方法是利用递归。将第一个字符和最后一个字符进行判断,如果相等,则继续递归判断剩余的子串是否回文字符串。如果不相等,则说明此字符串不是回文字符串。代码如下:


bool isPalindrome(string s) {

  int len = s.length();

  if (len < 2)

    return true;

  

  return s[0] == s[len-1] && isPalindrome(s.substr(1, len-2));

}

无论使用哪种方法,都可以实现判断字符串是否为回文字符串的功能。程序员可以根据实际需求选择适合的方法。

  
  

评论区

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