763. 劃分字母區間
阿新 • • 發佈:2018-11-04
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); char[] charArr = str.toCharArray(); int[] c = new int[charArr.length]; Map<Character, Integer> map = new HashMap(); for(int i=charArr.length-1; i>=0; i--) { if(map.get(charArr[i]) == null) { map.put(charArr[i], i); c[i] = i; }else { c[i] = map.get(charArr[i]); } } List list = new ArrayList<Integer>(); // c[] 構建完畢了 int i = 0; while(i <= charArr.length-1) { int k = c[i]; int newMax = k; for(int j=i; j<k; j++) { if(c[j] > k) { newMax = c[j]; } } if(newMax == k) { list.add(k); i = k + 1; }else { i = newMax; } } for(int g=0; g < list.size(); g++) { if(g == 0) { System.out.println((int)list.get(0)+1); } else { System.out.println((int)list.get(g)-(int)list.get(g-1)); } } }