Java学习之小练习四寻找重复字符

本文介绍了一个简单的Java程序,用于统计给定字符串中每个字符的出现次数,并找出出现次数最多和最少的字符。通过将字符串转换为字符数组并使用StringBuffer进行处理,避免了重复计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人要学会思考

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值