Add simple version

[?]
Nov 30, 2020, 9:04 PM
ZQFONDI4BKCOY3OT4FRASFDRLRVMXHGPBTAJ62CGRVFSNGPEKWJQC

Dependencies

  • [2] MCHVA5DY Palindrome initial import
  • [3] AUM6AXH7 It is enough to check only half of the string because of symmetry

Change contents

  • replacement in snippets/palindrome/palindrome.go at line 14
    [2.231][2.231:359]()
    var str string
    if len(scanner.Text()) > 2 {
    str = palindrome(scanner.Text())
    }
    if len(str) > 2 {
    fmt.Println(str)
    [2.231]
    [2.359]
    if len(scanner.Text()) > 3 {
    fmt.Println(Palindrome(scanner.Text()))
    } else {
    fmt.Println("Input string too short")
  • replacement in snippets/palindrome/palindrome.go at line 26
    [2.497][2.497:534]()
    func palindrome(str string) string {
    [2.497]
    [2.534]
    // Single thread version
    func palindrome_single(str string) string {
    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
    if str[k-i] == str[k+i] {
    candidate = string(str[k-i]) + candidate + string(str[k+i])
    } else {
    break
    }
    }
    if len(candidate) > len(longest) {
    longest = candidate
    }
    }
    return longest
    }
    // Returns the longest palindrome in str
    // Concurrent version
    func Palindrome(str string) string {