package 字符串;
import java.util.ArrayList;
import java.util.List;
public class DeletLest {
public static void main(String[] args) {
String str = "aabbcccddeefff111222";
int[] num = new int[str.length()];
List<Character> list = new ArrayList<Character>();
for (int j = 0; j < str.length(); j++) {
list.add(str.charAt(j));
num[j] = 1;
}
for (int n = 0; n < list.size(); n++) {
for (int i = n + 1; i < list.size(); i++) {
if (list.get(n) == list.get(i)) {
num[n]++;
num[i] = num[n];
}
}
}
int min = 1;
System.out.println("每一个字符出现的次数依次如下:");
for (int m = 0; m < list.size(); m++) {
min = num[0];
System.out.print(num[m]);
if (min >= num[m]) {
min = num[m];
}
}
System.out.println();
System.out.println("字符中出现次数最少的是" + min + "次");
for (int m = 0, k = 0; m < str.length(); m++, k++) {
if (num[m] == min) {
list.remove(k);
k--;
}
}
System.out.println("输出去掉最少字符后的字符串数据:");
System.out.println(list);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i));
}
System.out.println("输出最后的字符串为:" + sb.toString());// 这里没得这个toString转换也一样的
}
}
控制台输出如下:
有一点可以改进的:就是我们使用删除最少的,留下的就是结果,我们也可以将大于最少次数的字符提取出来,然后append到字符串中
StringBuffer sb=new StringBuffer();
for(int i=0;i<str.size();i++){
if(count[i]>min)
sb.append(list.get(i));
}