题解 | #记录点赞用户#

记录点赞用户

https://www.nowcoder.com/practice/19a766a67cdc4eb0a354d70597cf008b

import java.util.*;

public class Main {

    public static void main(String[] args) {
        LikeRecorder recorder = new LikeRecorderImpl();

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String name = scanner.next();
            recorder.like(name);
        }

        System.out.println(Arrays.toString(recorder.getLikeUsers()));
    }

}

/**
 * 点赞记录器
 */
interface LikeRecorder {

    /**
     * 若用户没有点赞过,则记录此次点赞行为。
     * 若用户曾经点赞过,则删除用户点赞记录。
     *
     * @param username 用户名
     */
    void like(String username);

    /**
     * 返回所有点赞的用户名
     *
     * @return 用户名数组
     */
    String[] getLikeUsers();

}

class LikeRecorderImpl implements LikeRecorder {

    // write your code here......

    // 创建集合对象
    HashSet<String> hs = new HashSet<String>();

    public LikeRecorderImpl(){
        super();
    }


    @Override
    public void like(String name){
        // 添加元素
        // hs.add(name);// 两次点赞就要取消点赞,例如Lucy有2次点赞行为,Tom有3次点赞行为 ,Lucy取消点赞,Tom第3次点赞成功。 所以不能直接添加到HashSet。   
        if(hs.contains(name)){
            hs.remove(name);
        }else {
            hs.add(name);
        }
        }

    @Override
    public  String[] getLikeUsers(){
        // String[] str; 
        // for(String s : hs){
        //     // System.out.print(s);
        // }
        String[] str = new String[0];   //  数据类型 [] 数组名 = new 数据类型[数组长度];    // 动态初始化
        return hs.toArray(str); // 调用 HashSet集合的toArray方法
    }

}

全部评论

相关推荐

06-18 15:03
重庆大学 运营
运营你豪哥:做一下被打的数据,分析输出优化建议
点赞 评论 收藏
分享
运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
点赞 评论 收藏
分享
面试了几家,全程问项目,八股一点都不问,可惜准备了这么久
独角仙梦境:现在感觉问八股像是中场休息一样的,问几个八股放松一下再上强度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务