1. 解题思路
这一题我一开始的思路是想用动态规划,结果发现想复杂了,要找出最大可能的substring,事实上其必然是以最大的字符开头的substring所能构造出来的最长的字符串当中最大的一个。
因此,只要给定的numFriends
不是1,我们就只需要找到字符串的最大的字符char
,然后考察所有该字符位置作为开头所能构成的最长的字符串,然后取出其最大值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def answerString(self, word: str, numFriends: int) -> str:
if numFriends == 1:
return word
n = len(word)
max_char = max(word)
ans = max_char
for i, ch in enumerate(word):
if ch != max_char:
continue
if i >= numFriends-1:
tmp = word[i:]
else:
need = numFriends - i
tmp = word[i:n-(numFriends - 1 - i)]
ans = max(ans, tmp)
return ans
提交代码评测得到:耗时4ms,占用内存18MB。