首页 > 其他分享 >最长回文子串

最长回文子串

时间:2022-12-03 23:34:25浏览次数:33  
标签:子串 palindrome len high item low str 最长 回文

 

remand = 'abaxyzzyxf'


def long_palindrome(s: str) -> str:
    longest = ''
    for i in range(len(s)):
        for j in range(i, len(s)):
            substr = s[i:j + 1]
            if is_palindrome(substr) and len(substr) > len(longest):
                longest = substr
    return longest


def is_palindrome(s: str) -> bool:
    # low = 0
    # high = len(s) - 1
    # while low <= high:
    #     if not s[low] == s[high]:
    #         return False
    #     low += 1
    #     high -= 1
    # return True
    return s == s[::-1]


print(long_palindrome(remand))
print(long_palindrome('abc'))

 

remand = 'abaxyzzyxf'


def long_palindrome(s: str) -> str:
    current = [0, 1]
    for idx in range(1, len(s)):
        odd = palindrome(s, idx - 1, idx + 1)
        even = palindrome(s, idx - 1, idx)
        long = max(odd, even, key=lambda item: item[1] - item[0])
        current = max(current, long, key=lambda item: item[1] - item[0])
    return s[current[0]: current[1]]


def palindrome(s: str, low: int, high: int) -> tuple[int, int]:
    length = len(s)
    while low >= 0 and high < length:
        if s[low] != s[high]:
            break
        low -= 1
        high += 1
    return low + 1, high


print(palindrome(remand, 0, 2))
print(long_palindrome(remand))

 

标签:子串,palindrome,len,high,item,low,str,最长,回文
From: https://www.cnblogs.com/dissipate/p/16949037.html

相关文章

  • 回文链表-python
    问题:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。思考:对称结构要想到stack方案一:双指针法将节点值赋值到数组......
  • JS案例:回文数的两种简易解法
    方法一解题思路:1.先将数值型转为字符串型,然后取字符串长度的一半向下取整(因为奇数个则最中间的不需要比较)2.从前和后同时进行遍历比较是否相等,不等时返回falsevarisPal......
  • 最长回文子序列
    1.动态规划代码问题:dp[i][j]:是否为回文串(以i开头,以j结尾)最优子:dp[i][j]=dp[i+1][j-1]若开头和结尾元素相等,并且中间也是回文,那么dp[i][j]也是回文记录长度:ans;记录开头:ret......
  • 最长上升子序列(字符串+路径追溯版)
    1#include<bits/stdc++.h>2usingnamespacestd;34#defineintlonglong56#ifdefLOCAL7#include"algo/dbg.h"8#else9#definedebug(...)4......
  • 力扣09 判断一个数是否是回文数
    力扣09判断一个数是否是回文数题目:给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如......
  • 力扣03 返回最大不重复子串的长度
    力扣03返回最大不重复子串的长度题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符......
  • 求一个字符串中连续出现次数最多的子串
    例如字符串“abababc”,最多连续出现的为ab,连续出现三次。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如abababcbababcababcbabcabcbcc这题跟 后缀数组求最......
  • python-解力扣题【回文数】
    1.题目以及解题代码解题思路:将整数转换成字符串,然后对比反转后的字符串与原字符串对比,相同就返回true ......
  • 最长连续不重复子序列
    给定一个长度为n 的整数序列,请找出最长的不包含重复的数的连续区间长度。#include<iostream>#include<unordered_map>usingnamespacestd;constintN=100010;......
  • 最长公共子序列
    最长公共子序列类问题最长公共子序列最长公共子序列给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符......