人要学会思考

package com.edu.hemowork1;

/**
 * 有abasdcalsjdfasf34asfjsfasf一段字符串,找出其中重复最多的字符,和重复最少的字符和重复的次数
 * 1.将所有字符无重复遍历出来
 * 2.查找每个字符的重复次数
 * 3.找出最大最小重复数对应的字符
 *
 */
public class Demo2 {
	public static void main(String[] args) {
		String string = "abasdcalsjdfasf34asfjsfasf";
		chongFu(string);	
	}
	private static void chongFu(String string) {
		//1.将字符串转换成字符数组
		char[] cs = string.toCharArray();
		//创建一个stringbuffer,利用其append方法,添加数据
		StringBuffer sb = new StringBuffer();
		//2.对字符数组进行遍历
		for (int i = 0; i < cs.length; i++) {
			/*遍历完数组后,输出的是一个个字符,然后再利用String.contains方法进行确认数组中是否包含重复的字符
				如果重复,就不添加,比较过程中,需要先将stringbuffer转换成string,同时将字符数组cs[i]转换成字符串string
			*/
			//stringbuffer转换成string  sb.toString();
			//将字符数组cs[i]转换成字符串String   String.valueOf(cs[i]);
			if (!sb.toString().contains(String.valueOf(cs[i]))) {
				sb.append(cs[i]);
			}
		}
		//System.out.println(sb);
		//统计每个字符出现的次数
		String string2 = sb.toString(); //把stringbuffer转换成string
		int[] size = new int[string2.length()];//创建一个int类型的数组存放每个字符的出现的字数
		for (int i = 0; i < sb.length(); i++) {
			int count = 0; //放在外层循环的原因是为了每次在内存找出字符出现字数后对count进行初始化
			for (int j = 0; j < cs.length; j++) {
				if (cs[j]==sb.charAt(i)) {
					count++;
				}
			}
			size[i] = count;
		}
		//System.out.println(Arrays.toString(size));
		//找出其中的最大值
		int min = size[2];//定义一个int类型min 把size[0]赋值给他,使用size[0]的目的,是为了取到size[]数组中的值,而不是其他的值
		int max = size[0];//
		for (int i = 0; i < size.length; i++) {
			if (size[i] > max) {
				max = size[i];
			}
			if (size[i] < min) {
				min = size[i];
			}
		}
		//System.out.println(min);
		//System.out.println(max);
		for (int i = 0; i < size.length; i++) {
			if (max == size[i]) {
				System.out.println(string.charAt(i)+"  "+max);//使用string.chatAt()获取索引值所在的字符
			}
			if (min == size[i]) {
				System.out.println(string.charAt(i)+"  "+min);
			}
		}
	}
}