@@ -13,31 +13,41 @@ func reverseString(s string) string {
13
13
}
14
14
15
15
func longestPalindrome (s string ) string {
16
- var resultMatch string
16
+ if len (s ) == 0 || len (s ) > 1000 {
17
+ return s
18
+ }
17
19
18
- if len ( s ) > 1000 {
19
- return resultMatch
20
+ if s == reverseString ( s ) {
21
+ return s
20
22
}
21
23
24
+ var resultMatch string
22
25
strSplit := []rune (s )
23
26
lenStr := len (strSplit )
24
-
25
- collectMatch := make (map [string ]int )
27
+ resultMatch = string (strSplit [0 ])
26
28
for i := 0 ; i < lenStr ; i ++ {
27
29
for j := i + 1 ; j <= lenStr ; j ++ {
28
- getStr := strSplit [i :j ]
29
- strJoin := string (getStr )
30
+ if strSplit [i ] != strSplit [j - 1 ] {
31
+ continue
32
+ }
30
33
31
- if _ , ok := collectMatch [ strJoin ]; ok {
34
+ if j > 1 && i + 1 < lenStr && strSplit [ i + 1 ] != strSplit [ j - 2 ] {
32
35
continue
33
36
}
34
37
38
+ if len (resultMatch ) >= j - i {
39
+ continue
40
+ }
41
+
42
+ strJoin := string (strSplit [i :j ])
35
43
strJoinReverse := reverseString (strJoin )
44
+
45
+ // if i == 1 {
46
+ // fmt.Printf("%d - %d \n", i, j)
47
+ // }
48
+
36
49
if strJoin == strJoinReverse {
37
- if len (strJoin ) > len (resultMatch ) {
38
- resultMatch = strJoin
39
- collectMatch [strJoin ] = i
40
- }
50
+ resultMatch = strJoin
41
51
}
42
52
}
43
53
}
@@ -48,8 +58,9 @@ func longestPalindrome(s string) string {
48
58
func run_longestPalindrome () {
49
59
// start := time.Now()
50
60
fmt .Println (longestPalindrome ("cbbd" ))
51
- // fmt.Println(longestPalindrome("c"))
52
- fmt .Println (longestPalindrome ("ibvjkmpyzsifuxcabqqpahjdeuzaybqsrsmbfplxycsafogotliyvhxjtkrbzqxlyfwujzhkdafhebvsdhkkdbhlhmaoxmbkqiwiusngkbdhlvxdyvnjrzvxmukvdfobzlmvnbnilnsyrgoygfdzjlymhprcpxsnxpcafctikxxybcusgjwmfklkffehbvlhvxfiddznwumxosomfbgxoruoqrhezgsgidgcfzbtdftjxeahriirqgxbhicoxavquhbkaomrroghdnfkknyigsluqebaqrtcwgmlnvmxoagisdmsokeznjsnwpxygjjptvyjjkbmkxvlivinmpnpxgmmorkasebngirckqcawgevljplkkgextudqaodwqmfljljhrujoerycoojwwgtklypicgkyaboqjfivbeqdlonxeidgxsyzugkntoevwfuxovazcyayvwbcqswzhytlmtmrtwpikgacnpkbwgfmpavzyjoxughwhvlsxsgttbcyrlkaarngeoaldsdtjncivhcfsaohmdhgbwkuemcembmlwbwquxfaiukoqvzmgoeppieztdacvwngbkcxknbytvztodbfnjhbtwpjlzuajnlzfmmujhcggpdcwdquutdiubgcvnxvgspmfumeqrofewynizvynavjzkbpkuxxvkjujectdyfwygnfsukvzflcuxxzvxzravzznpxttduajhbsyiywpqunnarabcroljwcbdydagachbobkcvudkoddldaucwruobfylfhyvjuynjrosxczgjwudpxaqwnboxgxybnngxxhibesiaxkicinikzzmonftqkcudlzfzutplbycejmkpxcygsafzkgudy" ))
61
+ fmt .Println (longestPalindrome ("babad" ))
62
+ fmt .Println (longestPalindrome ("ccc" ))
63
+ fmt .Println (longestPalindrome ("xaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyyyyyyyzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxwwwwwwwwwwvvvvvvvvvvuuuuuuuuuuttttttttttssssssssssrrrrrrrrrrqqqqqqqqqqppppppppppoooooooooonnnnnnnnnnmmmmmmmmmmllllllllllkkkkkkkkkkjjjjjjjjjjiiiiiiiiiihhhhhhhhhhggggggggggffffffffffeeeeeeeeeeddddddddddccccccccccbbbbbbbbbbaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuu" ))
53
64
// d := time.Since(start)
54
65
// fmt.Println(d)
55
66
}
0 commit comments