题解 | #牛群的回文队列#

牛群的回文队列

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()
}

全部评论

相关推荐

头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务