Detect the Email Addresses

  • + 0 comments

    Java 15

    import java.io.*;
    import java.util.*;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    public class Solution {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt(); scanner.nextLine();
            // Before and After @: (word.word.word...), with atleast one word, where each word is \w+
            Pattern pattern = Pattern.compile("\\w+(\\.\\w+)*@\\w+(\\.\\w+)*"); 
            // Creating hashset to hold unique emails
            HashSet<String> hashset = new HashSet<String>();
            for (int i=0;i<n;i++) {
                   Matcher matcher = pattern.matcher(scanner.nextLine());
                   while(matcher.find())    hashset.add(matcher.group());
            }
            // Converting hashset to arraylist in order to use sort()
            ArrayList arraylist = new ArrayList<String>(hashset);
            // Sorting arraylist in lexicographical order
            Collections.sort(arraylist);
            // Using ListIterator to iterate through arraylist
            ListIterator<String> iterator = arraylist.listIterator();
            while(iterator.hasNext()) {
                System.out.print(iterator.next());
                if(iterator.hasNext())  System.out.print(";");
            }
        }
    }