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

相关文章

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De