java实现:输入一串字符串,去掉出现次数最少的字符,打印出其他的

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));  
         }  


猜你喜欢

转载自blog.csdn.net/handsome2013/article/details/80798678