联想回文字符串的编程题
1. 判断是否是回文序列,输入是整数或者字符串
import stringdef isPalindrome_str(s: str) -> bool:"""判断是否视回文字符串,不考虑非字母字符O(n)的时间复杂度"""n = len(s)i = 0j = n - 1while i < j:while i < n and s[i] not in string.ascii_letters:i += 1while j > 0 and s[j] not in string.ascii_letters:j -= 1if i < n and j > 0 and s[i] == s[j]:i += 1j -= 1else:return Falsereturn Truedef isPalindrome(x: int) -> bool:"""判断整数是否是回文字符串"""res = []while x:val = x % 10res.append(val)x = x // 10s = res[::-1]if s == res:return Trueelse:return Falsedef isPalindrome_an(x: int) -> bool:"""判断整数是否是回文字符串"""return isPalindrome_str(str(x))a = 1221
res = isPalindrome(a)
print(res)a = 122
res = isPalindrome_an(a)
print(res)a = "abc*)=ba"
res = isPalindrome_str(a)
print(res)
2. 找出最长的回文子串
暴力法:
class Solution:def longestPalindrome(self, s: str) -> str:"""暴力法求解最长回文序列"""max_len = 0max_str = ""num = len(s)for i in range(num - 1):res = 0end_idx = ifor j in range(i + 1, num):tmp = s[i:j]if tmp[::-1] == s[i:j] and j - i + 1 > res:res = j - i + 1end_idx = jif res > max_len:max_len = resmax_str = s[i:end_idx]return max_strs = "babad"
cc = Solution()
res = cc.longestPalindrome(s)
print(res)
动态规划法:主要减少了回文串判断部分的时间,这里是时间换空间的作用
class Solution:def longestPalindrome(self, s: str) -> str:n = len(s)begin = 0maxlen = 0# 初始化,dp[i][j]表示s[i]...s[j]的子串是否是回文串dp = [[False] * n for _ in range(n)]for i in range(n):dp[i][i] = True# 任意一个元素s[i]都是回文串# 递推,遍历所有开始结束位置i,j。并判断是否是回文串for j in range(1, n):for i in range(j):if s[i] != s[j]:# 首尾元素不相同,肯定不是回文串dp[i][j] = Falseelse:if j - i < 3:dp[i][j] = True# 首尾元素相同,剩余部分少于一个元素else:dp[i][j] = dp[i + 1][j - 1]if dp[i][j] and j - i + 1 > maxlen:# 记录最长的回文串索引maxlen = j - i + 1begin = ireturn s[begin:begin + maxlen]s = "babad"
cc = Solution()
res = cc.longestPalindrome(s)
print(res)s = ""
cc = Solution()
res = cc.longestPalindrome(s)
print(res)
联想回文字符串的编程题相关推荐
- 1706. 球会落何处 / 680. 验证回文字符串 Ⅱ
1706. 球会落何处[中等题][每日一题] 思路: 单看每一行,必须是小球所在的列跟它左右两侧至少有一侧的挡板方向相同才能使小球滚动下去,否则就卡住了,具体点说就是,设小球当前所在列下标为i,那么如 ...
- [PTA C语言]判断回文字符串——编程题
判断回文字符串 输入一个字符串,判断该字符串是否为回文.回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的. 输入格式: 输入在一行中给出一个不超过80个字符长度的.以回车结束的非空字符串. ...
- leetCode第五题-求字符串最长回文字符串
原题链接: 最长回文字符串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"ab ...
- [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]
[问题描述][第680题][验证回文字符串Ⅱ][简单] 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串.示例 1:输入: "aba" 输出: True 示例 2 ...
- c语言编程判断输入的一个字符串是否是“回文”。所谓“回文”字符串就是左读和右读都一样的字符串。例如: “abcba“就是一个回文字符串。
编程判断输入的一个字符串是否是"回文".所谓"回文"字符串就是左读和右读都一样的字符串.例如: "abcba"就是一个回文字符串. 要求:先 ...
- 简单记录牛客top101算法题(初级题C语言实现)判断回文字符串 反转字符串 合并两个有序的数组
1. 判断是否为回文字符串 给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文.如果是回文请返回true,否则返回false. 字符串回文指该字符串正序与其逆序逐字符一致. // ...
- Java黑皮书课后题第6章:**6.26(回文素数)回文素数是指一个数同时为素数和回文数。编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开
6.26(回文素数)回文素数是指一个数同时为素数和回文数.编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开 题目描述与运行示例 代码 题目描述与运行示例 6.26(回文素数) ...
- Leetcode算法题(C语言)17--验证回文字符串
题目:验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, ...
- C#LeetCode刷题之#680-验证回文字符串 Ⅱ(Valid Palindrome II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3961 访问. 给定一个非空字符串 s,最多删除一个字符.判断是否 ...
最新文章
- java中sum=a+aa+aaa_Java面向对象基础IO系统
- Linux常用系统管理命令(top、free、kill、df)
- UVA10305 Ordering Tasks
- [算法] 麻将序数牌组合方案
- [转]计算机视觉之跟踪算法——相关滤波器Correlation Filter
- [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记
- 筝乐音乐播放器——黑马koltin影音笔记1
- oracle 创建用户且只有查看权限
- php 降低视频分辨率,怎么看视频的分辨率 如何改变视频分辨率|视频分辨率修改器...
- 项目现场如何通过安防网络设备的EHOME协议,把设备接入EasyCVR平台上进行互联网直播及分发?
- python依赖包冲突
- 兼容微信字体变大,页面错乱问题
- 39页大数据治理运营整体解决方案
- 用cJSON解析心知天气返回的数据包
- java bluecove教程_Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发
- 将一台笔记本电脑作为另一台笔记本电脑的扩展显示器
- 使用gdb调试Android(aarch 64)可执行二进制文件
- 将营销进行到底的逸仙电商,难向“完美”
- 《每日一题》NO.13:名词解释 设计流程篇
- 【TypeScript入门】TypeScript入门篇——类
热门文章
- 【精华】Asp优化之缓存技术
- 华为机试HJ72:百钱买百鸡问题
- C++-bit转hex(四位二进制转十六进制)
- mysql hy000 2013_MySQLERROR2013(HY000)错误解决方法
- js判断数组中重复元素并找出_javascript查找数组中重复元素的方法
- linux c代码调试工具,在 Linux 中调试 C 程序的福音——gdb
- CICD之maven介绍
- 亲密关系-【认知情绪】-每一次生气的背后有什么
- 自动化测试指南-自动化测试工程师必备的技能
- java中gettext方法_深入理解Java中方法的参数传递机制