随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
设计思想:这次的水王有三个,所以我选择用排除法一个个进行排除,假设第一个ID是水王,用它与之后的其他ID进行比较,对出现的次数进行统计,最后将这个ID全部拿出来,放入另一个数组中(出栈入栈的思想)。然后循环这个过程,直到全部水王找出。
package shuiwang2; import java.util.*; public class Find_shuiwang { public static void main(String[] args) { // TODO Auto-generated method stub Find_function function = new Find_function(); Scanner sca1=new Scanner(System.in); Scanner sca2=new Scanner(System.in); System.out.println("输入帖子数:"); int n=sca1.nextInt(); String post[]=new String[n]; int i; System.out.println("输入帖子ID:"); for(i=0;i<n;i++) { post[i]=sca2.nextLine(); } String shuiwang[] = function.find(post, n); System.out.println("水王ID是:"); for(i=0;i<3;i++) { System.out.println(shuiwang[i]+" "); } } }
package shuiwang2; public class Find_function { String[] find(String[] post,int n) { int i,j = 0; int num_find=0;//找到几个相同的ID int num_mark=0;//标记有几个ID入栈 int num_shuiwang=0; String shuiwang[]= new String[3]; String zhan[]=new String[n+1];//建一个栈放ID while(num_shuiwang<3){//当水王没找全之前一直循环 shuiwang[num_shuiwang]=post[0];//令第一个ID为水王 for(i=0;i<n-num_mark;i++)//两两对比 { if(shuiwang[num_shuiwang].equals(post[i])) { zhan[num_mark]=post[i]; num_find+=1; for(j=i;j<n-num_mark-1;j++)//前移数组 { post[j]=post[j+1]; } num_mark+=1; } } if(num_find >= n/4) { num_shuiwang+=1; num_find = 0; } else { num_find = 0; } } return shuiwang; } }
结果截图: