leetcode刷题心得 005: Longest Palindromic Substring (最长回文字符串)

栏目: 编程工具 · 发布时间: 5年前

内容简介:题目地址:解题思路:第一步:循环字符串,每次循环时, 判断当前字符前一位和后一位是否相等,如果相等,说明是回文。然后再判断前一位的前一位和后一位的后一位是否相等。。。如此找出当前字符能拼出的最长回文。如下代码就是这个逻辑。

题目地址: https://leetcode.com/problems/longest-palindromic-substring/

解题思路:

第一步:循环字符串,每次循环时, 判断当前字符前一位和后一位是否相等,如果相等,说明是回文。然后再判断前一位的前一位和后一位的后一位是否相等。。。如此找出当前字符能拼出的最长回文。如下代码就是这个逻辑。

for i:=0;i<len(s);{
        // b 回文开始的位置 e 回文结束的位置
        b,e :=i,i
        //判断当前字符前一位和后一位是否相等,如果相等,说明是回文。然后再判断前一位的前一位和后一位的后一位是否相等。。。  (回文判断核心逻辑) 
        for e<len(s)-1 && b>0 && s[e+1] == s[b-1]{
            b--
            e++
        }
        newLength := e+1-b
        if newLength >maxLength{
            begin = b
            maxLength = newLength
        }
        i++
    }

第二步,第一步的逻辑是能够处理 bab bacab 这类奇数位的回文的,但是不能判断出 baab baccab 这种偶数位回文。所以需要在逻辑中加入处理偶数位回文的过程

for i:=0;i<len(s);{
        b,e :=i,i
        //现在e还是在回文的中间字符位置,如果e的下一位和e相等,就把下一位也一起当作回文的中间字符,再下一位同理
        for e<len(s)-1 &&s[e]==s[e+1]{
            e++
        }
        
        i = e+1
        for e<len(s)-1 && b>0 && s[e+1] == s[b-1]{
            b--
            e++
        }
        
        newLength := e+1-b
        if newLength >maxLength{
            begin = b
            maxLength = newLength
        }
        
    }

第三步,上面已经把核心逻辑写完了,但是有一些特殊情况没处理。首先就是判断字符串长度,当已知字符串长度小于2时。(就只给了一个字符)那一定是个回文。 下面贴出完整的代码

func longestPalindrome(s string) string {
    if len(s) < 2 { 
		return s
	}
    begin,maxLength := 0,1
    
    for i:=0;i<len(s);{
        
        
        b,e :=i,i
        
        for e<len(s)-1 &&s[e]==s[e+1]{
            e++
        }
        
        i = e+1
        for e<len(s)-1 && b>0 && s[e+1] == s[b-1]{
            b--
            e++
        }
        
        newLength := e+1-b
        if newLength >maxLength{
            begin = b
            maxLength = newLength
        }
        
    }
    return s[begin:begin+maxLength]
}

OK~如有疑问,欢迎交流。

标签:golang leetcode


以上所述就是小编给大家介绍的《leetcode刷题心得 005: Longest Palindromic Substring (最长回文字符串)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

群体的智慧

群体的智慧

[美] 詹姆斯·索罗维基 / 王宝泉 / 中信出版社 / 2010-10 / 33.00元

《纽约时报》榜首畅销书,《商业周刊》《福布斯》杂志最佳商业图书 21世纪商务人士必读书,了解群体智慧时代的决策模式 告诉我们如何过日子、如何选择领导人、如何做生意以及如何思考这个世界 我们当中的大多数人,不论是选民还是投资者,是客户还是经理人,似乎都相信宝贵的知识掌握在少数人手中,认为精英们做出的决策更加聪明,很少有人相信“乌合之众”也能像专家那样做得如此出色。 但《纽约客......一起来看看 《群体的智慧》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具