21xrx.com
2024-11-22 12:04:16 Friday
登录
文章检索 我的文章 写文章
C语言实现回文字符串判断
2023-06-15 18:20:34 深夜i     --     --
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语言、回文字符串、递归、比较字符、长度

  
  

评论区

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