-4

When I try to solve an algorithm problem, I find that my golang code needs to take the negative index of the string, which generates an error, so what do I do?

func FindLongestPalindrom(s string) string {
    if len(s) == 1 || s == reverseString(s) {
        return s
    }
    max_len :=1
    start :=0
    for i:= 1;i<len(s);i++{
        even := s[i-max_len:i+1]
        odd := s[i-max_len-1 : i+1]
        if i-max_len-1 >= 0 && odd == reverseString(odd){
            start = i-max_len-1
            max_len +=2
        }
        if i-max_len >=0 && even == reverseString(even){
            start = i- max_len
            max_len += 1
        }
    }
    return s[start:start+max_len]
}

func reverseString(s string) string {
    runes := []rune(s)
    for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
        runes[from], runes[to] = runes[to], runes[from]
    }
    return string(runes)
}
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
pl5020
  • 1

1 Answers1

0

I have solved the problem by avoiding negative indexes,The program runs correctly and passes leetcode question 5.

func FindLongestPalindrom(s string) string {

    if len(s) == 1 || s == reverseString(s) {
        return s
    }
    max_len :=1
    start :=0

    for i:= 1;i<len(s);i++{
        even := s[i-max_len:i+1]
        var odd string
        if i-max_len-1 >= 0{
            odd = s[i-max_len-1 : i+1]
        }
        if i-max_len >=0 && even == reverseString(even){
            start = i- max_len
            max_len += 1
        }
        if i-max_len-1 >= 0 && odd == reverseString(odd){
            start = i-max_len-1
            max_len +=2
        }

    }
    return s[start:start+max_len]
}
pl5020
  • 1