문제설명:
문자열을 입력받아 부분 문자열 중 가장 긴 (palindrome)*의 길이를 리턴해야 합니다.
입력
인자 1 : str
출력
주의사항
go 소스코드
package main
import "fmt"
func longestPalindrome(s string) int {
if len(s) < 2 {
return len(s)
}
maxLength := 1
start := 0
fmt.Println(start)
for i := 1; i < len(s); i++ {
// 팰린드롬 중심이 한 글자일 때
left := i - 1
right := i + 1
for left >= 0 && right < len(s) && s[left] == s[right] {
length := right - left + 1
if length > maxLength {
maxLength = length
start = left
}
left--
right++
}
// 팰린드롬 중심이 두 글자일 때
left = i - 1
right = i
for left >= 0 && right < len(s) && s[left] == s[right] {
length := right - left + 1
if length > maxLength {
maxLength = length
start = left
}
left--
right++
}
}
return maxLength
}
func main() {
str := "My dad is a racecar athlete"
result := longestPalindrome(str)
fmt.Println("result", result)
str2 := " dad "
result2 := longestPalindrome(str2)
fmt.Println("result", result2)
}
go 입출력
go run longestPalindrome.go
0
result 11
0
result 5
Golang Algorithm - Rabin Karp (0) | 2023.03.02 |
---|---|
Golang Algorithm - countIslands (0) | 2023.03.01 |
Golang Algorithm - jobAllocation (0) | 2023.02.27 |
Golang Algorithm - decompression (0) | 2023.02.24 |
Golang - libp2p를 이용한 chat 실습 (0) | 2023.02.23 |