知识点 贪心 思路 首先逆序遍历预处理一遍数组,用end[26]数组维护每个字母最后出现的位置。 然后再遍历一次数组,假设每次放进去的片段左端点为l,右端点为r。 由题意可知,对于s[l~~r]片段内出现的字母,以后都不会再出现。 所以我们先考虑s[l]位置出现的最后位置r=end[s[l]-'a']。 然后,r是可以向右延伸的,取决于l~r之间的字母的新的出现的靠右的位置 (即更新r=max(r,end[s[i]-a]),其中l<=i<=r) 当更新到上界r仍不能再更新时,说明此时的片段内出现的字母以后不会再出现了,可以更新答案了。ans.push_back(r-l+1)即为长度...