master
ehlxr 2022-06-20 20:26:14 +08:00
parent e754ded095
commit 774700a83c
5 changed files with 46 additions and 23 deletions

14
main.go
View File

@ -3,23 +3,9 @@ package main
import "fmt"
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)
//
// fmt.Printf("%v\n", Reverse(root))
// fmt.Printf("%v\n", ReverseRec(root))
// fmt.Printf("%v\n", ReverseKGroup(root, 2))
s := "Hello 你好"
fmt.Println(s[2], s[6])
rs := []rune(s)
println(string(rs[6]))
// s := "babad"
// println(LongestPalindrome(s))
}

View File

@ -1,7 +1,7 @@
package src
/* 给你一个字符串 s找到 s 中最长的回文子串 */
func LongestPalindrome(s string) string {
func longestPalindrome(s string) string {
var res string
for i := 0; i < len(s); i++ {
// 回文串长度为奇数

View File

@ -7,5 +7,5 @@ import (
func TestLongestPalindrome(t *testing.T) {
s := "babad"
fmt.Printf("LongestPalindrome of %s is %s\n", s, LongestPalindrome(s))
fmt.Printf("LongestPalindrome of %s is %s\n", s, longestPalindrome(s))
}

View File

@ -1,6 +1,6 @@
package src
func Reverse(root *ListNode) *ListNode {
func reverse(root *ListNode) *ListNode {
var pre, tmp *ListNode
cur := root
for cur != nil {
@ -14,12 +14,12 @@ func Reverse(root *ListNode) *ListNode {
}
/* 递归反转链表 */
func ReverseRec(root *ListNode) *ListNode {
func reverseRec(root *ListNode) *ListNode {
if root == nil || root.Next == nil {
return root
}
res := ReverseRec(root.Next)
res := reverseRec(root.Next)
root.Next.Next = root
root.Next = nil
@ -27,7 +27,7 @@ func ReverseRec(root *ListNode) *ListNode {
}
/* K 个一组翻转链表 */
func ReverseKGroup(root *ListNode, k int) *ListNode {
func reverseKGroup(root *ListNode, k int) *ListNode {
if root == nil {
return root
}
@ -38,13 +38,13 @@ func ReverseKGroup(root *ListNode, k int) *ListNode {
}
n = n.Next
}
tmp := ReverseN(root, n)
root.Next = ReverseKGroup(n, k)
tmp := reverseN(root, n)
root.Next = reverseKGroup(n, k)
return tmp
}
/* 反转链表到指定节点 */
func ReverseN(root *ListNode, n *ListNode) *ListNode {
func reverseN(root *ListNode, n *ListNode) *ListNode {
var pre, tmp *ListNode
cur := root
for cur != n {

37
src/reverse_test.go Normal file
View File

@ -0,0 +1,37 @@
package src
import (
"fmt"
"testing"
)
var root *ListNode
var node2 *ListNode
func TestMain(t *testing.M) {
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)
t.Run()
}
func TestReverse(t *testing.T) {
fmt.Printf("%v\n", reverse(root))
}
func TestReverseRec(t *testing.T) {
fmt.Printf("%v\n", reverseRec(root))
}
func TestReverseKGroup(t *testing.T) {
fmt.Printf("%v\n", reverseKGroup(root, 2))
}
func TestReverseN(t *testing.T) {
fmt.Printf("%v\n", reverseN(root, node2))
}