【题解】验证回文串

题目要求
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

解题思路
1、这道题目要求判断字符串是否为回文串,回文串的意思是这个字符串从头读和从尾读都是一样的(如同摘要一样)。
2、并且题目说明了,空字符也算是有效的回文串,所以等一下我们也要判断字符串是否为空。
3、这里要说明一下NULL 和空字符的区别:

  • NULL 表示声明的是一个空对象,可以赋给任何对象。
  • 但是空字符是占有一块空字符空间,代表了一个对象实例。

4、我们会用到三个额外函数

  • strlen() 用来取出字符串的长度,头文件<string.h>;
  • isalnum() 用来判断字符是否为数字或字母,是则返回0,否则返回1;
  • tolower() 将字母转换成小写,isalnum() 和tolower() 的头文件都为<ctype.h>

解题过程

  1. 接收数据之后首先要判断数据合法性
  2. 判断指向字符是否为字母或数字,是则进行下一个判断。否则循环变量改变,跳过该次判断,进行下一个判断。
  3. 当头尾指针都是字母或数字时,可以开始对比是否相同。相同则循环变量改变,进行下一个循环。否则返回0(false)并退出循环(代表该字符串不为回文串)
  4. 如果循环没有退出,全部执行完成。这即代表该字符串为回文串,可以返回1(true)

该代码在力扣编译器提交

bool isPalindrome(char * str){
   
    int i, n;

    //1、判断数据合法性
    if(str == NULL)
        return 0;
    else if(strlen(str) == 0)
        return 1;

    n = strlen(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值