Last one of 2023, with a HashTable

For the last one in 2023, a medium-level but actually simple with a brute-force in N^2 (N=50) and use of a HashTable to keep track of the count per special string. Code is down below, Happy New Year! ACC

Find Longest Special Substring That Occurs Thrice I - LeetCode

2981. Find Longest Special Substring That Occurs Thrice I
Medium

You are given a string s that consists of lowercase English letters.

A string is called special if it is made up of only a single character. For example, the string "abc" is not special, whereas the strings "ddd""zz", and "f" are special.

Return the length of the longest special substring of s which occurs at least thriceor -1 if no special substring occurs at least thrice.

substring is a contiguous non-empty sequence of characters within a string.

 

Example 1:

Input: s = "aaaa"
Output: 2
Explanation: The longest special substring which occurs thrice is "aa": substrings "aaaa", "aaaa", and "aaaa".
It can be shown that the maximum length achievable is 2.

Example 2:

Input: s = "abcdef"
Output: -1
Explanation: There exists no special substring which occurs at least thrice. Hence return -1.

Example 3:

Input: s = "abcaba"
Output: 1
Explanation: The longest special substring which occurs thrice is "a": substrings "abcaba", "abcaba", and "abcaba".
It can be shown that the maximum length achievable is 1.

 

Constraints:

  • 3 <= s.length <= 50
  • s consists of only lowercase English letters.

public int MaximumLength(string s)
{
    Hashtable strCount = new Hashtable();
    int retVal = -1;

    for (int i = 0; i < s.Length; i++)
    {
        string str = "";
        for (int j = i; j < s.Length; j++)
        {
            if (String.IsNullOrEmpty(str) || str.EndsWith(s[j].ToString()))
            {
                str += s[j].ToString();
                if (!strCount.ContainsKey(str)) strCount.Add(str, 0);
                strCount[str] = (int)strCount[str] + 1;

                if ((int)strCount[str] >= 3) retVal = Math.Max(retVal, str.Length);
            }
            else break;
        }
    }

    return retVal;
}

Comments

Popular posts from this blog

Advent of Code - Day 6, 2024: BFS and FSM

Golang vs. C#: performance characteristics (simple case study)

Advent of Code - Day 7, 2024: Backtracking and Eval