java 汇总某一个字段的重复字段 java重复字符
转载
人要学会思考
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);
}
}
}
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。