c语言回文串判定代码_【每日一题】21.验证回文串

这是一篇关于使用C语言验证回文串的博客,文章介绍了如何忽略大小写并只考虑字母和数字来判断一个字符串是否为回文。通过从字符串两端同时取字符进行比较,实现了对回文串的高效判断,时间复杂度为O(s),空间复杂度为O(1)。
摘要由CSDN通过智能技术生成
0e26165be2ac236b3de435c68e0602f0.gif关注我们获取更多计算机考研信息

96d590b29236e2b887c8e9ebbb5db343.png

? 今日习题

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

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

输出: true

示例 2:

输入: "race a car"

输出: false

82990b19a5cbf1dae21dbb61259deee4.png

……⏰ 思考时间……

如果你想好答案了

请查看解题思路和代码实现

·解题思路·

先将字符串转为小写,从前面取一个字母或数字,再从后面取一个字母或数字(取到的不是字母或数字直接丢弃接着取),进行对比。如果不一致直接返回false,当字母+数字长度为双数时,回文串对比完会出现i > num;当字母+数字长度为单数时,回文串对比完会出现i==num,所以最后判断i>=num时说明是回文串直接返回true.

·代码实现·

func isPalindrome(s string) bool {
  s = strings.ToLower(s)
  n := len(s)
  num := n-1for i := 0; i     if (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '0' && s[i] <= '9'){if (s[num] >= 'a' && s[num] <= 'z') || (s[num] >= '0' && s[num] <= '9'){if s[i] != s[num]{return false
        }
      }else{//前面取到了字母或数字,但后面取到的不是。则接下来前面还是取当前的值,后面接着取
        i--
      }
      num--
    }if i >= num{return true
    }
  }return true
}

·算法分析·

时间复杂度:O(s),其中s是字符串得长度

空间复杂度:O(1)

微信关注“字节408考研”,

免费获取各院校计算机软件考研信息与专业课资料!

2e7fe560ff79c9635fffbc7eb88eac2c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值