125.验证回文字符串
一.题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
二.思路及代码
1> 一串字符串先整理成无符号全小写的形式,然后切一半前后比较(因为最大下标比长度小1,所以如果长度为偶数,前一半的下标就从 0 取到 floor((len(s) - 1)/2),后一半和前一半长度一样从倒数第一开始取)
class Solution:def isPalindrome(self, s):""":type s: str:rtype: bool"""new_s = ''for i in s:if i.isdigit() or i.islower():new_s = new_s + ielif i.isupper():new_s = new_s + i.lower()if new_s == '':return Trueelse:i = 0j = len(new_s) - 1while i <= math.floor((len(new_s) - 1)/2):if new_s[i] == new_s[j]:i += 1j -= 1else:return Falsereturn True
class Solution: def isPalindrome(self, s):"""Using traditional while loop for processing:type s: str:rtype: bool"""if len(s) == 0 or len(s) == 1:return True# len(s) > 0i = 0j = len(s)-1sen = s.lower()while i <= j:while i < len(s) and not (sen[i].isalnum()): i+=1while j > -1 and not (sen[j].isalnum()): j-=1if i <= j:if sen[i] != sen[j]:return Falseelse:i+=1j-=1return True
2> 利用python的method
上一个方法的用时比较长,这道题简直是为python里str 的 method量身定做的。
1) str.isalnum()
# by myself
class Solution: def isPalindrome(self, s):""":type s: str:rtype: bool """ # Method 2s = s.lower()new_s = ''for i in s:if i.isalnum():new_s = new_s + iif new_s == new_s[::-1]:return Trueelse:return False
# by example
class Solution:def isPalindrome(self, s):"""Using python library for processing:type s: str:rtype: bool"""if len(s) == 0 or len(s) == 1:return True# len(s) > 0sen = [item for item in s.lower() if item.isalnum()]return sen == sen[::-1]
2)str.replace()
class Solution:def isPalindrome(self, s):""":type s: str:rtype: bool"""s=s.lower()for punc in string.punctuation:s = s.replace(punc,'')s = s.replace(' ','')if s[::-1]==s:return Trueelse: return False
3) str.join(seq) --其中str为seq间的间隔,通常可以用"", ","等,下面的例子就用了""
class Solution:def isPalindrome(self, s):""":type s: str:rtype: bool"""s1 = []for i in s:if i.isalpha() or i.isalnum():s1.append(i)s = "".join(s1)s = s.lower()d = s[::-1]if s == d:return Trueelse:return False
125.验证回文字符串相关推荐
- 力扣--125验证回文串/680验证回文字符串II
125验证回文串 python代码 常规 def isPalindrome(s):if len(s) < 2:return TruesList = []s = s.lower()print(s) ...
- Leetcode:125.验证回文串,917仅仅反转字母,387字符串的第一个唯一字符
文章目录 125.验证回文串 题目描述 示例 思路分析 代码实现 917.仅仅反转字母 题目描述 示例 思路分析 代码实现 387.字符串的第一个唯一字符 题目描述 示例 思路分析 代码实现: 125 ...
- 回文串问题(leetcode 125. 验证回文串 c#)
leetcode 125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: &quo ...
- 680. 验证回文字符串 Ⅱ golang
题目 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "a ...
- 680. 验证回文字符串 Ⅱ
680. 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: s = "aba" 输出: true 示例 2: 输入: s ...
- [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]
[问题描述][第680题][验证回文字符串Ⅱ][简单] 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串.示例 1:输入: "aba" 输出: True 示例 2 ...
- 20190821:(leetcode习题)验证回文字符串
验证回文字符串 题目 大致思路 代码实现 题目 大致思路 首先明确什么是回文字符串: 正序和反序读,是一回事的句子,就是回文字符串 当然,你得把里面除了数字和字母的元素去掉,比如逗号啊,句号啊,之类的 ...
- 1706. 球会落何处 / 680. 验证回文字符串 Ⅱ
1706. 球会落何处[中等题][每日一题] 思路: 单看每一行,必须是小球所在的列跟它左右两侧至少有一侧的挡板方向相同才能使小球滚动下去,否则就卡住了,具体点说就是,设小球当前所在列下标为i,那么如 ...
- leetcode系列--680.验证回文字符串 Ⅱ
leetcode系列–第680题.验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 输入: s = "abca" 输出: true 解释: ...
最新文章
- Java 日志框架适配/冲突解决方案(值得收藏)
- html怎么将旋转定位在中心,html – 定位旋转的div元素
- Jenkins实战演练之Linux服务器快速搭建
- 软件工程师生存指南:面试准备、工作经验和实用工具
- 揭秘:美国警方监控技术大曝光
- java 继承和内部类_Java自学-接口与继承 内部类
- ubuntu下的jdk进行升级_如何在ubuntu上更新jdk版本
- (SPFA+最短路变形+回路对起点的影响)Arbitrage
- VLine[-1]=VLine[width]=128 数组的负一地址代表啥
- 晶晶赴约会(信息学奥赛一本通-T1049)
- 查看端口命令及端口功能详解
- 微信小程序一笔记账开发进度五
- 再论数据仓库与数据库的区别
- 在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
- 我要悄悄学习 Java 字节码指令,在成为技术大佬的路上一去不复返
- 无线信道模型分类和建模方法介绍--附思维导图
- matlab 图像处理之边缘提取
- 关于麒麟座开发板串口打印乱码与其它工程用官方源码出问题的解决方案
- 猜java数字游戏大全_Java 猜数字游戏
- Lanbda表达式 java8新特性