811. Subdomain Visit Count LeetCode Solution
In this guide, you will get 811. Subdomain Visit Count LeetCode Solution with the best time and space complexity. The solution to Subdomain Visit Count problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Subdomain Visit Count solution in C++
- Subdomain Visit Count solution in Java
- Subdomain Visit Count solution in Python
- Additional Resources
Problem Statement of Subdomain Visit Count
A website domain “discuss.leetcode.com” consists of various subdomains. At the top level, we have “com”, at the next level, we have “leetcode.com” and at the lowest level, “discuss.leetcode.com”. When we visit a domain like “discuss.leetcode.com”, we will also visit the parent domains “leetcode.com” and “com” implicitly.
A count-paired domain is a domain that has one of the two formats “rep d1.d2.d3” or “rep d1.d2” where rep is the number of visits to the domain and d1.d2.d3 is the domain itself.
For example, “9001 discuss.leetcode.com” is a count-paired domain that indicates that discuss.leetcode.com was visited 9001 times.
Given an array of count-paired domains cpdomains, return an array of the count-paired domains of each subdomain in the input. You may return the answer in any order.
Example 1:
Input: cpdomains = [“9001 discuss.leetcode.com”]
Output: [“9001 leetcode.com”,”9001 discuss.leetcode.com”,”9001 com”]
Explanation: We only have one website domain: “discuss.leetcode.com”.
As discussed above, the subdomain “leetcode.com” and “com” will also be visited. So they will all be visited 9001 times.
Example 2:
Input: cpdomains = [“900 google.mail.com”, “50 yahoo.com”, “1 intel.mail.com”, “5 wiki.org”]
Output: [“901 mail.com”,”50 yahoo.com”,”900 google.mail.com”,”5 wiki.org”,”5 org”,”1 intel.mail.com”,”951 com”]
Explanation: We will visit “google.mail.com” 900 times, “yahoo.com” 50 times, “intel.mail.com” once and “wiki.org” 5 times.
For the subdomains, we will visit “mail.com” 900 + 1 = 901 times, “com” 900 + 50 + 1 = 951 times, and “org” 5 times.
Constraints:
1 <= cpdomain.length <= 100
1 <= cpdomain[i].length <= 100
cpdomain[i] follows either the "repi d1i.d2i.d3i" format or the "repi d1i.d2i" format.
repi is an integer in the range [1, 104].
d1i, d2i, and d3i consist of lowercase English letters.
Complexity Analysis
- Time Complexity: O(n)
- Space Complexity: O(n)
811. Subdomain Visit Count LeetCode Solution in C++
class Solution {
public:
vector<string> subdomainVisits(vector<string>& cpdomains) {
vector<string> ans;
unordered_map<string, int> count;
for (const string& cpdomain : cpdomains) {
const int space = cpdomain.find(' ');
const int num = stoi(cpdomain.substr(0, space));
const string& domain = cpdomain.substr(space + 1);
count[domain] += num;
for (int i = 0; i < domain.length(); ++i)
if (domain[i] == '.')
count[domain.substr(i + 1)] += num;
}
for (const auto& [subdomain, freq] : count)
ans.push_back(to_string(freq) + ' ' + subdomain);
return ans;
}
};
/* code provided by PROGIEZ */
811. Subdomain Visit Count LeetCode Solution in Java
class Solution {
public List<String> subdomainVisits(String[] cpdomains) {
List<String> ans = new ArrayList<>();
Map<String, Integer> count = new HashMap<>();
for (final String cpdomain : cpdomains) {
final int space = cpdomain.indexOf(' ');
final int num = Integer.valueOf(cpdomain.substring(0, space));
final String domain = cpdomain.substring(space + 1);
count.merge(domain, num, Integer::sum);
for (int i = 0; i < domain.length(); ++i)
if (domain.charAt(i) == '.') {
String subdomain = domain.substring(i + 1);
count.merge(subdomain, num, Integer::sum);
}
}
for (final String subdomain : count.keySet())
ans.add(String.valueOf(count.get(subdomain)) + ' ' + subdomain);
return ans;
}
}
// code provided by PROGIEZ
811. Subdomain Visit Count LeetCode Solution in Python
class Solution:
def subdomainVisits(self, cpdomains: list[str]) -> list[str]:
ans = []
count = collections.Counter()
for cpdomain in cpdomains:
num, domains = cpdomain.split()
num, domains = int(num), domains.split('.')
for i in reversed(range(len(domains))):
count['.'.join(domains[i:])] += num
return [str(freq) + ' ' + domain for domain, freq in count.items()]
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.