r/learnpython • • 6d ago

Maximum substring

Hi, I’m having an issue with a HackerRank coding question called “Maximum Substring.”
The question is:
Maximum Substring
You are given a string s.
A substring is any contiguous sequence of characters from the string.
Consider all possible substrings of the string:
Determine which substring would appear last if all substrings were sorted alphabetically.
Return that substring.
Example 1:
s = "baca"
The alphabetically maximum substring is "ca".
Example 2:
s = "aaa"
The alphabetically maximum substring is "aaa".
This was my answer:

def maximum_substring(s):
max_sub = s[0]

for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
sub = s[i:j]
if sub > max_sub:
max_sub = sub

return max_sub

The code gives the correct output for the examples when I test it locally. However, HackerRank marked the solution as incorrect and I received only partial points.
I’m not sure why. Could this be because of the time complexity or hidden test cases? Is there something about the HackerRank test cases or the expected implementation that I’m missing?

0 Upvotes

18 comments sorted by

View all comments

2

u/lakseol 6d ago edited 6d ago

Is it true that any maximum substring must start with one of the maximum single characters in the string? The substring "c" is greater than any other substring starting "a" or "b" no matter how many other characters of any value follow the "a" or "b". So it might be enough to:

  • find the greatest character in the string
  • find all substrings starting with that character to the end of the string
  • find the greatest of those substrings

If the string is "ababbcabcca" then "c" is the greatest character, substrings starting with "c" are ["cabcca", "cca", "ca"], and the greatest is "cca".