每日一题Day09-划分字母区间

题面

题解

我们先存每个字母最后一次出现的位置

for(int i=0; i<length; i++) { last[s.charAt(i) - 'a'] = i; }

后面有相同字母出现时会覆盖前面的数组里的数据;

代码

class Solution { public List<Integer> partitionLabels(String s) { int length = s.length(); int[] last = new int[26]; for(int i=0; i<length; i++) { last[s.charAt(i) - 'a'] = i; } int start = 0, end = 0; List<Integer> ret = new ArrayList<>(); for(int i=0; i<length; i++) { end = Math.max(end, last[s.charAt(i) - 'a']); if(end == i) { ret.add(end - start + 1); start = end + 1; } } return ret; } }

后言

今天面经

1.bean生命周期

2.redis缓存雪崩,穿透,击穿

3.springboot好处

4.AOP是什么

5.IOC是什么

6.一个产品,一个两个用户各访问一次记录访问次数2次,一个用户访问两次,记一次,怎么实现;