Quantcast
Channel: Programming challenge "Friend Request in Social Network" - Code Review Stack Exchange
Viewing all articles
Browse latest Browse all 2

Programming challenge "Friend Request in Social Network"

$
0
0

I am trying to solve a programming problem on a coding platform. When I execute it on my PC, it works perfectly, but when I submit the code on the coding platform, it throws a "Time Limit Exceeded" error. Can someone check my solution and help optimize it?

In a social network, a person can invite friends of his/her friend. John wants to invite and add new friends. Complete the program below so that it prints the names of the persons to whom John can send a friend request.

Input format:

The first line contains the value of the N which represent the number of friends. N lines contain the name of the friend F followed by the number of friends of F finally their names separated by space.

Input:

3Mani 3 Ram Raj GunaRam 2 Kumar KishoreMughil 3 Praveen Naveen Ramesh

Output:

Raj Guna Kumar Kishore Praveen Naveen Ramesh

Explanation:

Ram is not present in the output as Ram is already John's friend.

My Approach

  1. Extract the first word of each line and store them in HashSet and remove them from the string. Names stored in HashSet are already friends of the person (John).
  2. Now extract the names from the String using StringTokenizer and check whether the name is contained in the HashSet. If it is not present then print it.

And can we solve this problem using graph/trees. The problem statement and my code can be found here.

import java.util.HashSet;import java.util.Scanner;import java.util.StringTokenizer;class Ideone {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int N = sc.nextInt();   // No of friends        sc.nextLine();        HashSet<String> hs = new HashSet<>();   // to store name of the John's friends         String invitation = "";        for(int i =0; i < N; i++)        {            String str = sc.nextLine();            String friend = "";            int j =0;            while(str.charAt(j)!= '')              {                friend = friend + str.charAt(j++);                hs.add(friend);     // add the name before the number to HashSet            }            j= j+2;            invitation=invitation+str.substring(j)+""; // remove name of John's friend from the string and store back remaining string        }                int j =0;        StringTokenizer st = new StringTokenizer(invitation); // divide string into tokens        while(st.hasMoreTokens())        {            String str = st.nextToken();            if(!hs.contains(str))   {                /* check if token(string) is already in hashset ie if the person already friend with John or not                 if he is not then print str                 */                System.out.print(str+"");            }        }    }}

Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images