JAVA47. 记录点赞用户
描述
输入描述
用户名输出描述
所有点赞且未取消点赞的用户名,不要求顺序。(输出为Arrays.toString形式)示例1
输入:
Tom Jim Lucy Lily Tom Lucy Tom
输出:
[Tom, Lily, Jim]
Java 解法, 执行用时: 26ms, 内存消耗: 10604KB, 提交时间: 2022-02-09
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...... // write your code here...... //用map记录用户是否点赞,如果是false,表示未点赞,或取消了点赞;如果是true,表示已点赞 Map<String,Boolean>map=new HashMap<>(); @Override public void like(String username) { //如果用户未点赞,则更新为已点赞,如果用户已经点赞,则重置为点赞 map.put(username,!map.getOrDefault(username,false)); } @Override public String[] getLikeUsers(){ List<String>list=new ArrayList<>(); //遍历map,将已点赞的用户添加到list for (String key: map.keySet()){ boolean value =map.get(key); //value为true表示已点赞 if (value){ list.add(key); } } //将list转化为String类型数组 return list.toArray(new String[list.size()]); } }
Java 解法, 执行用时: 26ms, 内存消耗: 10680KB, 提交时间: 2022-02-08
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 { private Set<String> userRecord; // write your code here...... @Override public void like(String username){ if(userRecord.contains(username)){ userRecord.remove(username); }else{ userRecord.add(username); } } @Override public String[] getLikeUsers(){ return userRecord.toArray(new String[userRecord.size()]); } public LikeRecorderImpl(){ super(); this.userRecord = new HashSet<String>(); } }
Java 解法, 执行用时: 27ms, 内存消耗: 10544KB, 提交时间: 2021-11-24
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...... Set<String> names = new HashSet<>(); @Override public void like(String username) { if(names.contains(username)){ names.remove(username); }else { names.add(username); } } @Override public String[] getLikeUsers() { int count = 0; String[] str = new String[names.size()]; for (String name : names) { str[count] = name; count++; } return str; } }
Java 解法, 执行用时: 27ms, 内存消耗: 10576KB, 提交时间: 2022-02-08
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...... private HashSet set=new HashSet(); @Override public void like(String username){ if(!set.contains(username)){ set.add(username); }else{ set.remove(username); } } @Override public String[] getLikeUsers(){ String[] ret = null; String str=""; for(Object str1 : set){ str=str+";"+str1; } str=str.substring(1); ret=str.split(";"); return ret; } }
Java 解法, 执行用时: 27ms, 内存消耗: 10612KB, 提交时间: 2021-11-15
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...... private Set<String> nameSet; public LikeRecorderImpl(){ nameSet=new HashSet(); } public void like(String username){ if(!nameSet.add(username)){ nameSet.remove(username); } } public String[] getLikeUsers(){ return nameSet.toArray(new String[0]); } }