Skip to content

Commit

Permalink
929. Unique Email Addresses in Java and Swift
Browse files Browse the repository at this point in the history
  • Loading branch information
Mahim1997 committed Nov 8, 2022
1 parent 3cfb9a5 commit 59eb3d9
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
25 changes: 25 additions & 0 deletions java/929-Unique-Email-Addresses.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class Solution {
private String getFormattedEmail(String email) {
String[] arr = email.split("@");
String localName = arr[0];
String domainName = arr[1];

// Only keep the first part of "+" sign
String[] arrLocalWithPlus = localName.split("\\+");
localName = arrLocalWithPlus[0];

// Replace "."/dots
localName = localName.replace(".", "");

return localName + "@" + domainName;
}

public int numUniqueEmails(String[] emails) {
Set<String> uniqueEmails = new HashSet<>();
for(String email: emails) {
String formattedEmail = getFormattedEmail(email);
uniqueEmails.add(formattedEmail);
}
return uniqueEmails.size();
}
}
28 changes: 28 additions & 0 deletions swift/929-Unique-Email-Addresses.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class Solution {
func getFormattedEmail(from email: String) -> String {
let arr = email.split(separator: "@")

var localNameInitial = arr[0]
let domainName = arr[1]

// Ignore everything from first + (plus) sign
let arrLocalNameSplitPlus = localNameInitial.split(separator: "+")
guard let localNameWithoutPlus = arrLocalNameSplitPlus.first else { return "" }

// Remove . (dot) sign
let localName = localNameWithoutPlus.replacingOccurrences(of: ".", with: "")

return "\(localName)@\(domainName)"
}

func numUniqueEmails(_ emails: [String]) -> Int {
var uniqueEmails: Set<String> = Set()

emails.forEach { email in
let formattedEmail = getFormattedEmail(from: email)
uniqueEmails.insert(formattedEmail)
}

return uniqueEmails.count
}
}

0 comments on commit 59eb3d9

Please sign in to comment.