import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); int position = 1; //定义每次分割的下标 //abcabcdfef abcabc d fef //1 先找出第一个字符a的最后一个位置索引3 获得子串 abca //1.1 如果最后的索引为0或者1 表示没有索引,不需要遍历子串 字符长度为最后索引值+1 //2 遍历abca的中间字符串 bc 分别找出其最后一个字符的位置 分别为4 和5 那么第一组字符长度就是最大值5+1 //3 继续拿截取后的字符如此操作 分别找出子串长度 //4 退出条件 子串为空 while(true) { if(s.length() == 0) { break; } //1 先找出第一个字符a的最后一个位置索引3 获得子串 abca int lastIndex = s.lastIndexOf(s.charAt(0)); //1.1 如果最后的索引为0或者1 表示没有索引,不需要遍历子串 字符长度为最后索引值+1 if(lastIndex <2) { System.out.print(lastIndex+1+" ");//输出第一个字符串长度 s = s.substring(lastIndex+1);//被分割后的字符串 continue; } //2 遍历abca的中间字符串 bc 分别找出其最后一个字符的位置 分别为4 和5 那么第一组字符长度就是最大值5+1 int maxIndex = 0; //定义一个存取最大的索引 for(int i = 1;i<lastIndex;i++) { int tmpMaxIndex = s.lastIndexOf(s.charAt(i)); if(tmpMaxIndex > maxIndex) { maxIndex = tmpMaxIndex; } } System.out.print(maxIndex+1+" ");//子串长度 s = s.substring(maxIndex+1);//被分割后的字符串 } } }