diff --git a/1044-longest-duplicate-substring.go b/1044-longest-duplicate-substring.go new file mode 100644 index 0000000..af40257 --- /dev/null +++ b/1044-longest-duplicate-substring.go @@ -0,0 +1,57 @@ +package main + +func LongestDupSubstringBruteforce(s string) string { + strLen := len(s) + if strLen < 2 { + return "" + } + + res := "" + for ln := 1; ln < strLen; ln++ { + for i := 0; i <= strLen-ln; i++ { + word1 := s[i : i+ln] + count := 0 + for j := 0; j <= strLen-ln; j++ { + word2 := s[j : j+ln] + if word1 == word2 { + count++ + if count > 1 { + res = word1 + break + } + } + } + } + } + + return res +} + +func LongestDupSubstringReversedBruteforce(s string) string { + strLen := len(s) + if strLen < 2 { + return "" + } + + for ln := strLen - 1; ln >= 1; ln-- { + for i := strLen - ln; i >= 0; i-- { + word1 := s[i : i+ln] + count := 0 + for j := strLen - ln; j >= 0; j-- { + word2 := s[j : j+ln] + if word1 == word2 { + count++ + if count > 1 { + return word1 + } + } + } + } + } + + return "" +} + +func LongestDupSubstring(s string) string { + return LongestDupSubstringBruteforce(s) +} diff --git a/1044-longest-duplicate-substring_test.go b/1044-longest-duplicate-substring_test.go new file mode 100644 index 0000000..29eee98 --- /dev/null +++ b/1044-longest-duplicate-substring_test.go @@ -0,0 +1,18 @@ +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestLongestDupSubstring(t *testing.T) { + assert.Equal(t, "ana", LongestDupSubstring("banana")) + assert.Equal(t, "", LongestDupSubstring("abcd")) + assert.Equal(t, "aaa", LongestDupSubstring("aaaa")) + assert.Equal(t, "", LongestDupSubstring("")) + assert.Equal(t, "", LongestDupSubstring("a")) + assert.Equal(t, "x", LongestDupSubstring("xx")) + assert.Equal(t, "xx", LongestDupSubstring("xxx")) + assert.Equal(t, "bananab", LongestDupSubstring("bananabananab")) + assert.Equal(t, "sfd", LongestDupSubstring("polxtvqlurgobbzbjcjsupskvzmtuveuavrzcxaifmdwqjbuejdasuxcvsupqnucorfawncjqkbakilhiekavhmsjbtlsfydijafxhgrgbsswtnvdquwokcliaxevairergwdtndsibiulqiutkcwsqpzuyypnhiowgvkkdbpkoyvgwyuqcokjnxluamwnuhqjtaossezwxvkpdkqcleqjkelcludtbigxkueupnxjncrbgvdrsdpppqqcopnwadqsxkvlkghfmtvdeygpyxamvxhmmaunxskgnenobvnzizbxwrjeedisrgzykoaidiffzqzsmirxkvfwmtifywamcpxziyjohcudzelgbmdgiaqwnzdbkwbhdioiokaivzlzscshrvbmggdztjuimribrgmdlcctvldbcxwpqnqbkzrcayqdqraobqcgoxxocclasphcjcydpkgkqhrmmxtklpxfxnrgnzczjxanaltnjhwfatgryqhcllemgqcchiagizpdgiqioqyhrpattutmuotrcwtxvdqzzsomofizebbqrgwruydyawsssjkakjpjlzmfhmjetymftxrhilpcgfqyoohyydnodfortlkeoncmfkdraiqydxcodyapjaxumjwczwmthrcecfgsswwtnyqurvggamjbsjdzmcuyefwnsrnhhpusfdsxbsrsrywbccullupdbovnmzluqsfdhqbef")) +}