longestPalindrome
This commit is contained in:
parent
f588b88700
commit
c6760f0a68
30
main.go
30
main.go
@ -1,22 +1,28 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
. "github.com/ehlxr/leetcode-go/src"
|
. "github.com/ehlxr/leetcode-go/src"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
node5 := &ListNode{Val: 5, Next: nil}
|
// node5 := &ListNode{Val: 5, Next: nil}
|
||||||
node4 := &ListNode{Val: 4, Next: node5}
|
// node4 := &ListNode{Val: 4, Next: node5}
|
||||||
node3 := &ListNode{Val: 3, Next: node4}
|
// node3 := &ListNode{Val: 3, Next: node4}
|
||||||
node2 := &ListNode{Val: 2, Next: node3}
|
// node2 := &ListNode{Val: 2, Next: node3}
|
||||||
node1 := &ListNode{Val: 1, Next: node2}
|
// node1 := &ListNode{Val: 1, Next: node2}
|
||||||
root := &ListNode{Val: 0, Next: node1}
|
// root := &ListNode{Val: 0, Next: node1}
|
||||||
|
// fmt.Printf("%v\n", root)
|
||||||
fmt.Printf("%v\n", root)
|
//
|
||||||
|
|
||||||
// fmt.Printf("%v\n", Reverse(root))
|
// fmt.Printf("%v\n", Reverse(root))
|
||||||
fmt.Printf("%v\n", ReverseRec(root))
|
// fmt.Printf("%v\n", ReverseRec(root))
|
||||||
// fmt.Printf("%v\n", ReverseKGroup(root, 2))
|
// fmt.Printf("%v\n", ReverseKGroup(root, 2))
|
||||||
|
|
||||||
|
// s := "Hello 你好"
|
||||||
|
// println(s[2], s[6])
|
||||||
|
// rs := []rune(s)
|
||||||
|
// println(string(rs[6]))
|
||||||
|
|
||||||
|
s := "babad"
|
||||||
|
println(LongestPalindrome(s))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
33
src/palindrome.go
Normal file
33
src/palindrome.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package src
|
||||||
|
|
||||||
|
/* 给你一个字符串 s,找到 s 中最长的回文子串 */
|
||||||
|
func LongestPalindrome(s string) string {
|
||||||
|
var res string
|
||||||
|
for i := 0; i < len(s); i++ {
|
||||||
|
// 回文串长度为奇数
|
||||||
|
p1 := palindrome(s, i, i)
|
||||||
|
if len(p1) > len(res) {
|
||||||
|
res = p1
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回文串长度为偶数
|
||||||
|
p2 := palindrome(s, i, i+1)
|
||||||
|
if len(p2) > len(res) {
|
||||||
|
res = p2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从中心向两段扩展
|
||||||
|
func palindrome(s string, l, r int) string {
|
||||||
|
for l >= 0 && r < len(s) && s[l] == s[r] {
|
||||||
|
l--
|
||||||
|
r++
|
||||||
|
}
|
||||||
|
|
||||||
|
// (r-1)-l 为回文串的长度
|
||||||
|
// s[l+1 : (r-1)-l+(l+1)] 为回文串
|
||||||
|
return s[l+1 : r]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user