The longest repeating string puzzle
Package Mainimport ("FMT" "strings") type Index map[int]inttype Counter map[string]indexvar c = Make (Counter) func SE Trecord (Match string, Index int) {i, OK: = C[match] If!ok {i = make (index) c[match] = i retu RN} I[index]++}func Filteroverlap () {var keys []string for k: = range c {keys = append (keys, k)} For _, Xkey: = Range keys {for k: = Range C {if strings. Hasprefix (Xkey, k) && Xkey! = k {//FMT. Printf ("Delete key=%v\n", k) Delete (c, k) continue}}}}func Calc (samp Le []byte) {var i, N, xi, XJ, Yi, yj int n = len (sample) var A, b string for i = 0; i < n; i++ {fo R XI = i; Xi < n-1; xi++ {for XJ = XI + 1, XJ < n; xj++ {for yi = xj + 1; Yi < n; yi++ { YJ = Yi + (xj-xi) A = string (Sample[xi:xj]) b = string (sample[Yi:yj]) If a = = b {Setrecord (A, xi) Setrecord (b, Yi)} }}}}}func main () {var s = "12342342341234" Calc ([]byte (s)) Filteroverlap () for K, V: = range C {fmt. Printf ("%v:%v\n", K, Len (v))}}