0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Longest Palindromic Substring

汽车电子技术 来源:神经网络与强化学习 作者:Jemma Liu 2023-03-01 11:28 次阅读

Description:

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Example 2:

Input: "cbbd"
Output: "bb"

5. 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"

输出: "bab"

注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"

输出: "bb"

今天遇到最长回文这道题,说实话对我来说是有点难度,攻了两次才攻下来,个人觉得很有纪念意义,写下来记录一下。

Solution1: Greedy方法

回文字符串, 是正读反读都一样的字符串。比较直接的方法是在每个字符位置上向前和向后搜索找到回文字符串。其中,对于搜索时需要对奇数位和偶数位两种形式进行探索,奇数位以当前位置的字符为中心;偶数位以当前位置和其相邻一个位置的两个字符为中心向两边拓展。

class Solution:
    def check_Palindrome(self,s,left,right):
        res =''
        while(left>=0 and right <len(s) and s[left] == s[right]):
            if len(res) < len(s[left:right+1]):
                res = s[left:right+1]
            left -= 1
            right += 1
        return res

    def longestPalindrome(self, s: str) -> str:
        l =len(s)
        res = ''
        for i in range(l):
            left = self.check_Palindrome(s,i,i)
            right = self.check_Palindrome(s,i,i+1)
            maxStr = None
            if(len(left)>len(right)):
                maxStr = left
            else:
                maxStr = right

            if(len(maxStr) > len(res)):
                res = maxStr
        return res
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20126
  • 奇数
    +关注

    关注

    0

    文章

    3

    浏览量

    1343
  • 偶数
    +关注

    关注

    0

    文章

    5

    浏览量

    1677
收藏 人收藏

    评论

    相关推荐

    Linux Shell系列教程之Shell字符串用法

    :position:length}在$string中, 从位置$position开始提取长度为$length的子串${string#substring}从变量$string的开头, 删除最短匹配
    发表于 08-29 16:01

    VC+MScomm32控件制作串口通讯工具分享!

    string DWORD cSubKeys=0;// number of subkeys DWORD cbMaxSubKey;// longest subkey size DWORD cchMaxClass
    发表于 09-11 04:37

    c#字符串截取索引超出范围

    text=“aa0101738f3a02ea”我想两个两个的截取出来,buf【0】=aabuf【1】=01...........运行到 buf[n] = text.Substring(i*2, 2);总是有问题出现索引超出范围。必须为非负值并小于集合大小。请问各位什么原因导致的,没有超出范围啊
    发表于 03-13 04:35

    鸿蒙手机计算器开发练习

    ").show();return;} else if(operators.contains(text.getText().substring(text.length()-1))) {new
    发表于 06-01 15:38

    【合宙Air551G双频定位开发板试用体验】用ESP8266联网作为服务端显示坐标

    ;,N"); dongjing = incomingByte.substring(dongjing_x + 1, dongjing_x + 12); beiwei
    发表于 03-30 01:58

    【DFRobot Beetle ESP32-C3开发板试用体验】车载导航天气挂件?

    ; Serial.println(comdata); int ic=comdata.indexOf('*'); String tmp=comdata.substring(1,ic
    发表于 07-04 14:53

    为什么无法将长度为700的字符串发送到手机?

    );request_fromApp += request_onWiFi.substring(untill1 + 2, untill2);request_fromApp += (","
    发表于 02-23 06:11

    使用Arduino SDK进行编码并将代码ESP8266和ESP32,代码不工作是怎么回事?

    ;tO = WiFi.localIP().toString().length()+1;nodeFour = WiFi.localIP().toString().substring(froM, tO).c_str();
    发表于 02-24 08:26

    Arduino 1.8.5 IDE中使用ESP8266-07代码奔溃的原因?怎么解决?

    ;battery") != -1){ val1 = req.substring(14, 19); val2 = req.substring(21, 26); val3 = req.substring(28
    发表于 02-24 08:04

    esp8266发送数据后MDNS停止响应的原因 ?

    =") != -1){ Serial.print(req.substring(2,5)); Serial.println(req.substring(7,11));//Serial.println
    发表于 02-28 08:42

    Wifi需要很长时间才能连接怎么处理?

    = file.readStringUntil(\\\'\\\\n\\\'); if(s.startsWith(\\\"ssid\\\")) {wifi_ssid=s.substring
    发表于 05-15 07:51

    把带有外部按钮的Sonoff Th16放在盒子里,可以访问Wifimanager的门户以输入新密码?

    ;]; switchOffMin = sr.substring(11,13).toInt()*60 + sr.substring(14,16).toInt(); switchOffMin
    发表于 05-30 08:22

    C语言算法分析:求最长的递增数列

    求最长的递增数列(Longest Increasing sequence, LIS)是一个比较常见的问题。
    的头像 发表于 06-22 14:57 2926次阅读
    C语言算法分析:求最长的递增数列

    Longest Substring no Repeat Characters

    首先对于查询是否存在的操作我们选择用dict来做(hash速度快), 对整个字符串进行遍历 用dict字典中存储已经访问过的数据. 对于未存在于dict中的元素直接添加key:value为s[i]:i; 当遇到已经存在的元素更新start的位置为dict[s[i]]的下一位, 因为dict中的值仍然保留start之前的数元素, 所以遇到的存在元素未必是有效的, 需要对start的更新值进行判断start = max(start, dct[s[i]] + 1). 最后更字典和最大长度即可
    的头像 发表于 03-01 13:37 256次阅读

    如何使用JDK截断一个字符串

    目标。 使用JDK截断一个字符串 Java提供了许多方便的方法来截断一个 String 。让我们来看看。 使用 String 的 substring() 方法 String 类有一个方便的方法,叫做
    的头像 发表于 10-08 15:43 316次阅读