diff --git a/cs/find-longest-special-substring-that-occurs-thrice-i.cs b/cs/find-longest-special-substring-that-occurs-thrice-i.cs new file mode 100644 index 0000000..4dd859f --- /dev/null +++ b/cs/find-longest-special-substring-that-occurs-thrice-i.cs @@ -0,0 +1,26 @@ +public class Solution { + public int MaximumLength(string s) { + var counter = new Dictionary<(char, int), int>(); + + for (var l = 0; l < s.Length; ++l) { + var c = s[l]; + + var substringLength = 0; + for (var r = l; r < s.Length && c == s[r]; ++r) { + ++substringLength; + + var key = (c, substringLength); + counter[key] = 1 + (counter.ContainsKey(key) ? counter[key] : 0); + } + } + + return counter.Select(pair => { + if (pair.Value < 3) { + return null; + } + + var (c, length) = pair.Key; + return (int?)length; + }).Max() ?? -1; + } +}