-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRepeatCharSort.java
More file actions
40 lines (37 loc) · 1.18 KB
/
RepeatCharSort.java
File metadata and controls
40 lines (37 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.java.algorithm;
import java.util.ArrayList;
import java.util.List;
/**
* 字符串中将连续出现的字符按出现次数从大到小的顺序排序,例如aaabbbbcca则输出bbbb,aaa,cc,a
*
* @author Belief
*/
public class RepeatCharSort {
public static void main(String[] args) {
String s = "aaabbbbcccaab";
List<String> result = new ArrayList<String>();
for (int i = 0, j = i + 1, l = s.length(); i < l; i = j) {
char temp = s.charAt(i);
for (; j < l; j++) {
if (temp != s.charAt(j)) {
result.add(s.substring(i, j));
break;
}
}
// 边界
if (j == l) {
result.add(s.substring(i, j));
}
}
// 直接插入排序
int len = result.size();
for (int i = 1; i < len; i++) {
for (int j = i; j > 0 && result.get(j - 1).length() < result.get(j).length(); j--) {
String t = result.get(j);
result.set(j, result.get(j - 1));
result.set(j - 1, t);
}
}
System.out.println(result);
}
}