longestPalindrome
This commit is contained in:
parent
f588b88700
commit
c6760f0a68
30
main.go
30
main.go
@ -1,22 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
. "github.com/ehlxr/leetcode-go/src"
|
||||
)
|
||||
|
||||
func main() {
|
||||
node5 := &ListNode{Val: 5, Next: nil}
|
||||
node4 := &ListNode{Val: 4, Next: node5}
|
||||
node3 := &ListNode{Val: 3, Next: node4}
|
||||
node2 := &ListNode{Val: 2, Next: node3}
|
||||
node1 := &ListNode{Val: 1, Next: node2}
|
||||
root := &ListNode{Val: 0, Next: node1}
|
||||
|
||||
fmt.Printf("%v\n", root)
|
||||
|
||||
// node5 := &ListNode{Val: 5, Next: nil}
|
||||
// node4 := &ListNode{Val: 4, Next: node5}
|
||||
// node3 := &ListNode{Val: 3, Next: node4}
|
||||
// node2 := &ListNode{Val: 2, Next: node3}
|
||||
// node1 := &ListNode{Val: 1, Next: node2}
|
||||
// root := &ListNode{Val: 0, Next: node1}
|
||||
// fmt.Printf("%v\n", 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))
|
||||
|
||||
// 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