力扣 5. 最长回文子串 暴力破解

简介: 力扣 5. 最长回文子串 暴力破解

题目


image.png




思考


回文字符串,是指的是 从前往后 和 从后往前 都是一样的


例如

这些都是回文

abba

abcxcba

而这不是

abab


我们用本办法解决该问题

  1. 我们可以将字符串所有的回文都找出来
  2. 比较回文中最长那一个返回回去即可




如何判断是否是回文字符串


只需要一个判断头,一个判断尾巴,依次向中间靠拢到字符的中间节点,判断头和尾相等,就可以完成回文字符串的判断


图即


image.png



如何找出所有的回文字符串


按照上文所述判断是否是回文字符串所述,我们可以将字符串分割为如下几个步骤


也以 abcdedcba 为例子


我们可以分别计算这几个是否是回文字符即可



判断1

image.png

判断2


image.png

直至

image.png


我们只需要将这些 回文字符 收集起来,用以判断哪个更长即可

abcdedcba 去重后共有这几个回文字符abcdedcbabcdedcbcdedcdedabcde



代码

func longestPalindrome(s string) string {
  if 0 == len(s) {
    return ""
  }
  huiwenok := true
  i1 := 0
  j1 := 0
  huiwenstrings := make([]string,0)
  for i:=0;i<len(s);i++ {
    for j:=len(s)-1;j>=i;j-- {
      huiwenok = true
      if s[i] == s[j] {
        centers := int((i+j) / 2)
        i1 = i
        j1 = j
        for {
          if j1 <= centers {
            break
          }
          if s[i1] != s[j1] {
            huiwenok = false
            break
          }
          i1++
          j1--
        }
      } else {
        huiwenok = false
      }
      if huiwenok == true {
        if i <= j {
          huiwenstrings = append(huiwenstrings, s[i:j+1])
        }
      }
    }
  }
  oklen := 0
  for k,_ :=range huiwenstrings {
    if len(huiwenstrings[oklen]) < len(huiwenstrings[k]) {
      oklen = k
    }
  }
  return huiwenstrings[oklen]
}


采用的是暴力破解法,中间也出来很多纰漏没有考虑到的,比如 字符串长度为0 等等,我在想,我们再现实开发中没有黑盒系统进行验证,是自行验证问题,还是全权交付给测试验证呢?








相关文章
|
13天前
Leetcode第五题(最长回文子串)
这篇文章介绍了解决LeetCode第五题“最长回文子串”问题的一种方法,使用了中心扩展法来寻找给定字符串中的最长回文子串。
27 0
|
5月前
|
算法
LeetCode算法题---最长回文子串、N 字形变换(四)
LeetCode算法题---最长回文子串、N 字形变换(四)
40 0
|
2月前
|
Python
【Leetcode刷题Python】5. 最长回文子串
LeetCode 5题 "最长回文子串" 的Python解决方案,使用动态规划算法找出给定字符串中的最长回文子串。
37 3
|
2月前
|
算法
LeetCode第5题最长回文子串
该文章介绍了 LeetCode 第 5 题最长回文子串的解法,通过分析回文子串的特点,使用动态规划的思想,用二维数组记录字符串是否为回文串,从后往前遍历找子串,减少重复判断,最终找到最长回文子串,并总结了解题时通过举例推导找规律的思路。
LeetCode第5题最长回文子串
|
4月前
|
存储 算法 Java
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
42 2
|
5月前
leetcode-5:最长回文子串
leetcode-5:最长回文子串
46 0
|
5月前
leetcode代码记录(最长回文子串
leetcode代码记录(最长回文子串
43 2
|
4月前
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
|
5月前
|
索引
力扣---最长回文子串(动态规划)
力扣---最长回文子串(动态规划)
|
5月前
|
存储 算法 Go
LeetCode第五题: 最长回文子串
给定一个字符串 `s`​,找到 `s`​ 中最长的回文子串。你可以假设 `s`​ 的最大长度为 1000。
LeetCode第五题: 最长回文子串