palindrome: Use string slice instead of concatenating, this makes the code WAY faster

[?]
Dec 21, 2020, 9:48 PM
L5UJYVXW4IIG33A62TO542DWALEC75W2D6YR2LF24W3OFX67J5PQC

Dependencies

  • [2] VUXCDW3L palindrome: move to palindrome package
  • [3] O64GEJAP palindrome: do not report one char long palindromes
  • [4] ZQFONDI4 Add simple version
  • [*] MCHVA5DY Palindrome initial import

Change contents

  • replacement in snippets/palindrome/palindrome.go at line 9
    [2.173][4.196:417](),[4.196][4.196:417]()
    longest := ""
    for k := 0; k < len(str)/2+1; k++ {
    candidate := string(str[k])
    for i := 1; true; i++ {
    // avoid overrun or underrun
    if (k-i < 0) || (k+i > len(str)-1) {
    break
    }
    // two identical bytes
    [2.173]
    [4.417]
    if str == "" {
    return ""
    }
    var longest string
    for k := 1; k < len(str)/2+1; k++ {
    var candidate string
    for i := 1; k-i > -1 && k+i < len(str); i++ {
  • replacement in snippets/palindrome/palindrome.go at line 17
    [4.446][4.446:510]()
    candidate = string(str[k-i]) + candidate + string(str[k+i])
    [4.446]
    [4.510]
    candidate = str[k-i : k+i+1]
  • replacement in snippets/palindrome/palindrome.go at line 26
    [4.608][3.0:54]()
    if len(longest) > 1 {
    return longest
    }
    return ""
    [4.608]
    [4.624]
    return longest
  • edit in snippets/palindrome/palindrome.go at line 32
    [2.264]
    [6.534]
    if str == "" {
    return ""
    }