leetcode_811. 子域名访问计数

2023-10-30 20:55

本文主要是介绍leetcode_811. 子域名访问计数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:https://leetcode.cn/problems/subdomain-visit-count/description/

涉及知识点:库函数atoi,库函数strstr,库函数strchr,库函数sprintf,UT_hash

解法一:自己构造结构体

#define LEN 100typedef struct {char str[LEN];int cnt;
} MARK_S;char ** subdomainVisits(char ** cpdomains, int cpdomainsSize, int* returnSize){int i ,j;MARK_S mark[300] = {0};char temp[LEN];int mark_size = 0;for (i = 0; i < cpdomainsSize; i++) {char *p = strstr(cpdomains[i], " ");int space_index = p - cpdomains[i];char rep[LEN] = {0};memcpy(rep, cpdomains[i], sizeof(char) * space_index);int count = atoi(rep);strcpy(temp, cpdomains[i] + space_index + 1);for (j = 0; j < mark_size; j++) {if (strcmp(mark[j].str, temp) == 0) {mark[j].cnt += count;break;}}if (j == mark_size) {strcpy(mark[mark_size].str, temp);mark[mark_size++].cnt = count;}p = strstr(cpdomains[i], ".");while (p) {strcpy(temp, p + 1);for (j = 0; j < mark_size; j++) {if (strcmp(mark[j].str, temp) == 0) {mark[j].cnt += count;break;}}if (j == mark_size) {strcpy(mark[mark_size].str, temp);mark[mark_size++].cnt = count;}p = strstr(p + 1, ".");  }}*returnSize = mark_size;char **ans = (char **)malloc(sizeof(char*) * mark_size);for (i = 0; i < mark_size; i++) {ans[i] = (char*)malloc(sizeof(char) * 110);sprintf(ans[i], "%d %s", mark[i].cnt, mark[i].str);}return ans;
}

解法二:哈希表

typedef struct {char *key;int cnt;UT_hash_handle hh;
} HASH_S;HASH_S *usrs = NULL;char ** subdomainVisits(char ** cpdomains, int cpdomainsSize, int* returnSize) {HASH_S *cur, *next;for (int i = 0; i < cpdomainsSize; i++) {int count = atoi(cpdomains[i]);int space_index = strchr(cpdomains[i], ' ') - cpdomains[i];HASH_FIND_STR(usrs, cpdomains[i] + space_index + 1, cur);if (!cur) {cur = (HASH_S*)malloc(sizeof(HASH_S));cur->key = cpdomains[i] + space_index + 1;cur->cnt = count;HASH_ADD_STR(usrs, key, cur);} else {cur->cnt += count;}int len = strlen(cpdomains[i]);for (int j = space_index + 1; j < len; j++) {if (cpdomains[i][j] != '.') {continue;}HASH_FIND_STR(usrs, cpdomains[i] + j + 1, cur);if (!cur) {cur = (HASH_S*)malloc(sizeof(HASH_S));cur->key = cpdomains[i] + j + 1;cur->cnt = count;HASH_ADD_STR(usrs, key, cur);} else {cur->cnt += count;}  }}char **ans = (char**)malloc(sizeof(char*) * HASH_COUNT(usrs));*returnSize = 0;HASH_ITER(hh, usrs, cur, next) {ans[*returnSize] = (char*)malloc(sizeof(char) * 110);sprintf(ans[(*returnSize)++], "%d %s", cur->cnt, cur->key);HASH_DEL(usrs, cur);free(cur);}return ans;
}

这篇关于leetcode_811. 子域名访问计数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/310541

相关文章

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置