课堂练习--找水王

 

思路:因为水王的发帖数目超过了总帖子数的一半,就是水王的帖子比其他所有人的帖子加起来还要多。比较相邻两个发帖ID,若不相同,则把两个帖子全部删除;若相同,则删除一个,之后再继续比较。到最后剩下的就是水王的id。

代码:

package test;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 找水王
 * @author t'w'j
 *
 */


public class ShuiWang {
    public static void main(String[] args) throws IOException {
        find();
    }

    public static void find() throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("sw.txt"));
        String s,s1 = null,s2 = null,shuiwang = null;
        int i=1;
        while((s = br.readLine()) != null) {
            s1 = s;
            if(s2 == null) {
                s2 = br.readLine();
            }
            System.out.println("------------------------------------------");
            System.out.println("第" + i++ + "次比较");
            System.out.println("s1:" + s1);
            System.out.println("s2:" + s2);
            if(s2 != null) { 
                if(s1.compareTo(s2) != 0)   //两个值不同,s2重置,因为s1每次都重置,所以不用管s1
                    s2 = null;
                else                        //两个值相同,s2不重置,将相同的值当作水王记录下来
                    shuiwang = s2;
            }else {
                shuiwang = s1;
            }
            System.out.println("记录id:" + shuiwang);
        }
        if(shuiwang == null)
            shuiwang = s2;
        System.out.println("\n水王id为:" + shuiwang);
        br.close();
    }

}

运行结果:

 个人总结:看到题目后,最开始想的是统计个id的数量,存放到数组里,然后找到数目最大的哪个id,就是水王。老师说那样就太麻烦了。之后就有同学分享了这种方法,确实这种方法很妙,时间复杂度也降低了。总之自己要多多学习,拓展思路。

posted @ 2020-05-28 18:27  兜转转  阅读(155)  评论(0编辑  收藏  举报