首页 > 编程知识 正文

查重记录表,查重记录没了

时间:2023-05-05 17:12:21 阅读:238838 作者:914

String str="sdchiemcnskdcnslclklcdkjsd"; boolean[] boo=new boolean[str.length()];//创建一个和字符串等长的数组,保存了那些是第一次出现的数据, char[] chars=str.toCharArray(); //先搜出所有的可能性没然后创建一个数组,里面正好才能存储所有可能性。 int count=0;/计数 wai:for(int i=0;i<chars.length;i++){ //遍历 for(int j=0;j<i;j++){ //比较之前的数据 if(boo[j]&&chars[i]==chars[j]) continue wai; //检测有没有出现过的数据,如果出现了就离开结束当前的 } //下面这两个代码, 是在上述wai中的代码 没跳出的情况下执行, 遍历原数据,每个店比较之前的数据,检测有没有出现过的数据,如果,从来没出现就执行下边这两个 boo[i]=true; count++; } char[] cs=new char[count]; int[] num=new int[count]; count=0;// 归零 游标 for(int i=0;i<chars.length;i++){ if(boo[i])cs[count++]=chars[i]; } for(int i=0;i<cs.length;i++){ int count_1=0; for(int j=0;j<chars.length;j++){ if(cs[i]==chars[j]) count_1++; } num[i]=count_1; }System.out.println("种类="+Arrays.toString(cs)); System.out.println("数目="+Arrays.toString(num)); }

第二种

String str="abcabcabcabefa"; char[] chars=str.toCharArray(); char[] cs=new char[0]; int[] num=new int[0]; for(int i=0;i<chars.length;i++){ boolean boo=true; for(int j=0;j<cs.length;j++){ if(cs[j]==chars[i]){ boo=false; num[j]=num[j]+1; } } if(boo){ char[] new_cs=new char[cs.length+1]; int[] new_num=new int[num.length+1]; for(int j=0;j<cs.length;j++){ new_cs[j]=cs[j]; } for(int j=0;j<num.length;j++){ new_num[j]=num[j]; } new_cs[new_cs.length-1]=chars[i]; new_num[new_num.length-1]=1; cs=new_cs; num=new_num; } }System.out.println("种类="+Arrays.toString(cs)); System.out.println("数目="+Arrays.toString(num));

结题思想:扫描原数据,逐个选择作为对比主体,让对比主体和他之前的每个数据做比较,如果相同,说明比较主题是重复的,如果前面所有数据都没有重复的那么就是新的数据,需要用一个变量装下这套结果,结果的个数正好是原数据的文字数量,那么让结果保存在等长数组中,根据结果意义选择了boolean数据类型,得到所有种类后,创建一套数据结构能够保存该数据的两个属性,数据的名字,数据的个数,这里考虑用到数组下表映射,让数据名字保存在char类型数组中,让个数保存在int类型数组中。接下来要将原数据哄的文字转移到数据名字的char类型数组,用之前存在boolean数组中的结果快速对比,找到那些需要储存,并且用游标,让数据逐个向后保存,之后计算没个数据的个数,多层for循环,技术没个字符出现的次数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。