import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return int整型一维数组
*/
public int[] cowGrouping (String s) {
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < s.length();) {
int index = s.lastIndexOf(s.charAt(i));
if (index == -1) {
arrayList.add(1);
i++;
} else {
int start = i + 1, end = index;
while (start < end) {
end = Math.max(end, s.lastIndexOf(s.charAt(start)));
start++;
}
arrayList.add(end - i + 1);
i = end + 1;
}
}
int [] result = new int[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
result[i] = arrayList.get(i);
}
return result;
}
}
本题知识点分析:
1.有序集合
2.双指针
3.数学模拟
4.集合转数组
本题解题思路分析:
1.如果字符只有一个,那么就切片为1,添加长度为1,然后i++
2.如果字符至少有两个,那么就要循环这两个字符之间的其他字符,start = i+1,end = index,持续去更新end,找到最后面的end,也就是最大的一次切片,然后将该子字符串的长度 end-i+1添加到集合,然后更新i = end+1,就是下一个切片的位置。
本题使用编程语言: Java
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

京公网安备 11010502036488号