题解 | #牛群的回文队列#
牛群的回文队列
https://www.nowcoder.com/practice/fdd01d1c1ea047f0b2206a477ccf8a90
package main
import (
"bytes"
"strings"
)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
func longest_palindrome_cow_queue(s string) string {
// write code here
result := ""
if len(s) == 0 {
return result
}else if len(s)==1{
return s
}
arr := strings.Split(s, "")
lMin := 0
rMax := len(arr) - 1
for i := 0; i < len(arr); i++ {
// abba
if i < rMax && arr[i]==arr[i+1] {
result = fc(arr,i,i + 1,result)
}
// aba
if i > lMin && i < rMax && arr[i-1]==arr[i+1] {
result = fc(arr,i - 1,i + 1,result)
}
}
return result
}
func fc(arr []string,l,r int,result string) string {
for arr[l] == arr[r] {
if l > 0 && r < len(arr)-1 && arr[l-1] == arr[r+1] {
l--
r++
} else {
break
}
}
if r-l+1 > len(result) {
result = funString(arr[l : r+1])
}
return result
}
func funString(arr []string) string {
buf := bytes.Buffer{}
for i := 0; i < len(arr); i++ {
buf.WriteString(arr[i])
}
return buf.String()
}

