21xrx.com
2025-03-21 11:23:25 Friday
文章检索 我的文章 写文章
C语言实现回文字符串判断
2023-06-15 18:20:34 深夜i     13     0
C语言 回文字符串 遍历 长度 循环

回文字符串是指正着读和倒着读都一样的字符串,比如"level"和"racecar"。本文将介绍如何使用C语言判断一个字符串是否是回文字符。

方法一:遍历字符串

一种常见的方法是遍历字符串的前一半,并与字符串的后一半相比较。如果是回文字符串,则前一半与后一半的字符应该是相同的。

首先,我们需要获取字符串的长度,然后将其分成前一半和后一半。如果长度为偶数,则前一半和后一半应该有相同的长度。如果长度为奇数,则前一半比后一半多一个字符。

然后,我们可以使用一个循环遍历前一半,并检查它们是否与对应的后一半字符相同。如果遇到不同的字符,则可以直接返回false。如果成功遍历完成,那么这个字符串就是回文字符串。下面是完整的代码示例:

#include 
#include 
int isPalindrome(char str[]) {
  int length = strlen(str);
  for (int i = 0; i < length / 2; i++) {
   if (str[i] != str[length - 1 - i])
     return 0;
   
  }
  return 1;
}
int main() {
  char str[] = "racecar";
  if (isPalindrome(str)) {
   printf("%s is a palindrome", str);
  } else {
   printf("%s is not a palindrome", str);
  }
  return 0;
}

方法二:递归比较字符

另一种方法是使用递归来比较字符串中的字符。这种方法的思路是判断第一个和最后一个字符是否相等,如果相等则递归比较剩余的字符串,直到剩余字符串为空或只有一个字符。

首先,我们需要检查字符串是否为空或只有一个字符,如果是则可以直接返回true。否则,我们可以比较第一个字符和最后一个字符是否相等,如果相等则从第二个字符和倒数第二个字符开始递归比较字符串,否则直接返回false。下面是递归方法的完整代码示例:

#include 
#include 
int isPalindrome(char str[]) {
  int length = strlen(str);
  if (length <= 1)
   return 1;
 
  if (str[0] != str[length - 1])
   return 0;
 
  str[length - 1] = 0;
  return isPalindrome(str + 1);
}
int main() {
  char str[] = "racecar";
  if (isPalindrome(str)) {
   printf("%s is a palindrome", str);
  } else {
   printf("%s is not a palindrome", str);
  }
  return 0;
}

关键词:C语言、回文字符串、递归、比较字符、长度

  
  

评论区

请求出错了