一、给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
代码实现
class S:
def longest(self, s):
n = len(s)
if n < 2:
return s
dp = [[False] * n for _ in range(n)]
max_len = 1
index = 0
for i in range(n):
dp[i][i] = True
for j in range(1, n):
for i in range(j):
if s[i] == s[j]:
if j - i <= 2:
dp[i][j] = True
else:
dp[i][j] = dp[i + 1][j - 1]
if dp[i][j] == True:
cur = j - i + 1
if cur > max_len:
max_len = cur
index = i
return s[index:index + max_len]
r = S()
s = "babad"
print(r.longest(s))
二、判断是否是回文数
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
代码实现
def func(s):
dic = {"(": ")", "{": "}", "[": "]", "?": "?"}
l = ["?"]
for item in s:
if item in dic:
l.append(item)
elif dic[l.pop()] != item:
return False
return len(l) == 1
s = "("
res = func(s)
print(res)
三、给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码实现
def fun4():
num=123321
s=str(num)
for i in range(len(s)//2):
if s[i]!=s[-i-1]:
print(False)
break
else:
print(True)
fun4()