这道题的思路是:
1 首先建立一个长度为26的整形数组,用来放每一个字母最后出现的位置,方法就是遍历字符串,自然数组里的数字会被最后的字母的位置覆盖,然后我们用每个char和a相减的结果作为位置插入,其实就相当于1-10个数字,我们统计个数或者干嘛也会用这个方法,只不过这里是字符,转换一下就好了。
2 再次遍历这个字符串,我们比较当前这个字母所对应的最后的位置和之前记录的最大位置的大小,取最大的。然后我们看这个最大值和现在的所在的位置是不是一样,一样就意味着一个子序列已经生成了。
3 这个算子序列的长度的方法是我们记录了一个位置,每生成一个子序列,我们会让这个子序列更新,当前位置+1;所以计算子序列长度就两端相减加一就好了。
代码:
https://github.com/hanleirx/LeetCode/blob/master/763.%20%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4
网友评论