哈希表企业应用-DNA的字符串检测

news2025/7/13 3:01:56

DNA的字符串检测-引言

若干年后, ikun DNA 检测部成立,专门对 这些ikun的解析检测 突然发现已经完全控制不了 因为学生已经会了 而且是太会了
所以DNA采用 以下视频测试:
ikun必进曲
ikun必经曲
ikun必阶曲

如何感受到了吧!,如果你现在唱跳并且还Rap 还有打篮球 还有铁山靠 那么你就是名副其实的真ikun 为ikun发光发亮,那些假的ikun 只会说:食不食油饼,香精煎鱼.拿什么荔枝 绿尸寒警告,看到这各位想必ikun已经回应那些 黑我们坤坤的人曾经说出食不食油饼,香精煎鱼.拿什么荔枝这些黑粉们你们知道ikun 有多努力? 为了创作 不惜牺牲于自身.emmmm这些你们知道? 他们只不过i kun 而已你们这些小黑子有什么权利说我们ikun ! “闭嘴” DNA检测部门 :他们可是贡献了你们坤坤的"知名度"跟他们比 “你们这些只会喊和叫和骂还有什么” ,“我不信” DNA部门:治不了你 带走 改造DNA 变成名副其实的"黑子DNA部门! " 哈哈, 此时应该插入哦呼w<敢 杀 我 的 马?!>那些魔性的笑声

DNA的字符串检测-原理

所谓的小黑子DNA 检测部门到是有可能00后下一代可能危害巨大必须加以改造 不然老是想着"唱跳并且还Rap 还有打篮球 “危害社会 什么的 当然这也没什么一些家长认为"而且还培养爱运动的习惯…唱功 练习 肺活量练习”
ikun服务部:免费为ikun们 DNA检测 于是乎上3亿人统一归来 大喊为ikun助力 怎么检测有"真ikun"成分?

突然检测组陷入了谜团之中…之前不检测出有种真ilun成分 分别为: “ADDR”,“ABBR”,“BADR”,“BCEE”,“CBEC”,“CRAB”,“DACD”,“DDRC” 这些DNA序列
如何快速匹配真ikun 的DNA?
以下代码 传统方式 测试

#include<iostream>
using namespace std;

// ikun 基因库测试 类型:传统  
void  iKunGeneSrcLibTradiTest(void) {  

    // ikun 基因串长度 
    const int iKunGeneStrLen = 4;
    
    // ikun 基因源库,存储可能的基因串 ("ADDR","ABBR",->唱)  ("BADR","BCEE"-> 跳)  ("CBEC","CRAB"->Rap) ("DACD","DDRC" ->篮球)
    const char* iKunGeneSrcLib[8] = { "ADDR","ABBR","BADR","BCEE","CBEC","CRAB","DACD","DDRC" };  

    // 要匹配的基因串 
    const char* TRueIkunGene = "XADDRIKUNYYDS";
    
    // 匹配标志,默认false
    bool ikunFlag = false;  

    // 遍历基因源库
    for (size_t i = 0; i < 8; i++){
        
        // 如果源库中的基因串与要匹配的基因串的前4个字符相同
        if (strncmp(TRueIkunGene + 1, iKunGeneSrcLib[i], iKunGeneStrLen)==0) {  
            
            // 设置匹配标志并结束遍历
            ikunFlag = true;
            break;
        }
    }

    // 如果匹配成功
    if (ikunFlag){  
        cout << "真ikun 不用质疑了" << endl;
    }else{
        cout << "小黑子 香精煎鱼?" << endl;
    }  

}  

int main(void) {   

    // 调用测试函数
    iKunGeneSrcLibTradiTest();   

    return 0;
}

ikun 服务部: 看着挺好用的,但不够高效 (还挺懂啊 ) 上亿人 等着呢 怎么办 突然来了一个原神+崩坏:星穹铁道 玩家说了一句: 让我来看看 (没错就是作者本人在这里插入图片描述,若干年后,还是一名不知名的程序员 看这挺老的 那可不谁没年轻过呢) emmmm 这段代码?,好像我觉得在CSDN平台看到过,而且好像是我写的,…
一堆废话后,唉我忘了我找找看(此时用的是虚拟键盘 和虚拟电脑 感觉用不习惯)…
找到了…emmm 一顿操作后,如下代码:

#include<iostream>
#include"HashTable.h"

using namespace std;


// ikun 基因库测试 类型:散列  
void  iKunGeneSrcLibHashiTest(void) {
    
    // 基因串长度
    const int iKunGeneStrLen = 4;  
    
    // 基因源库
    const char* iKunGeneSrcLib[8] = { "ADDR","ABBR","BADR","BCEE","CBEC","CRAB","DACD","DDRC" };  

    // 要匹配的基因串
    const char* TRueIkunGeneSrc = "XCDDRIKUNYYDS"; 
    
    // 创建哈希表
    HashTable iKunGeneSrcIndexLib;
    CreateHashTable(iKunGeneSrcIndexLib);

    // 将基因源库中的基因串插入哈希表
    for (size_t i = 0; i < 8; i++){
        HashTableInsert(iKunGeneSrcIndexLib, CreateHashValue(iKunGeneSrcLib[i], iKunGeneSrcLib[i]));
    }
    
    // 取要匹配基因串的前4个字符
    char TRueIkunGene[5];  
    strncpy_s(TRueIkunGene, TRueIkunGeneSrc + 1, iKunGeneStrLen);
    
    // 在哈希表中查找
    GetFindHashValue findValue = HashTableFind(iKunGeneSrcIndexLib, TRueIkunGene);
    
    // 如果找到,打印找到的基因,否则打印提示信息
    if (findValue.isExist){  
        cout << "真ikun 基因:" << findValue.value->value <<endl; 
    }else {
        cout << "没有找到该基因 :" << TRueIkunGene << "  默认为小黑子基因" << endl; 
    }  

    // 销毁哈希表
    HashTableDestroy(iKunGeneSrcIndexLib);  

}

int main(void) {

	iKunGeneSrcLibHashiTest();
	return 0;
}

搞定这下大规模数据没有问题了
emmm 给大家介绍所使用的哈希函数算法吧

// SDBM哈希函数 
const unsigned int SMBD_Hash(Key key) {  

    // 0x7FFFFFFF是int类型的最大值,用于取模运算,防止哈希值溢出
    const unsigned max = 0x7FFFFFFF;  
    
    // 初始化哈希值 
    unsigned int hash_code = 0;   
    
    // 遍历要计算哈希值的字符串 
    while (*key){    
        
        // 更新哈希值
        hash_code =    (*key++) + (hash_code << 6) + (hash_code << 16) - hash_code;  
        
    }
    
    // 对max取模,防止哈希值溢出 
    return hash_code & max;  
    
}

我只说一个GetFindHashValue

//查找存在的HashValue  
struct GetFindHashValue{  

    //表示哈希值是否存在。 
    bool isExist;   

    //哈希值本身  
    HashValue *value;
};

//哈希表查找算法
GetFindHashValue HashTableFind(const HashTable& HashTable, Key key) {  

    //获取哈希表的桶空间
    HashBucket BucketSpace = HashTable.BucketSpace;  

    //计算键key的哈希值,得到其在桶空间中的索引
    int HashIndex = Hash({ key }, HashTable);  

    //获取键key所在桶的头节点
    HashElement HashElementList = BucketSpace[HashIndex];  

    //跳过头节点,进入链表
    HashElementList = HashElementList->Next;  

    //遍历链表,查找键key
    while (HashElementList && cmp(HashElementList->MyValue.key,key)) {  
        HashElementList = HashElementList->Next;
    }
    
    //如果找到,HashElementList指向找到的节点,否则为nullptr
    HashValue* v = HashElementList != nullptr ? &HashElementList->MyValue : nullptr;
    GetFindHashValue result{};  

    //如果找到,设置相关字段,否则isExist为false
    if (v) {  
        result.isExist = true;
        result.value = v;
    }  

    return result;  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化运维工具Ansible之playbooks剧本

目录 一、playbooks 1、playbooks简述 2、playbooks剧本格式 3、playbooks组成部分 4、playbooks启动及检测 5、playbooks模块实战实例1 6、vars模块实战实例2 7、when模块实战实例3 8、with_items循环模块实战实例4 9、template模块实战实例5 10、tags模块实战实例…

有研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具(上)

导语&#xff1a;研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具。 Dell PFS BIOS提取器 介绍 解析 Dell PFS BIOS 映像并提取其 SPI/BIOS/UEFI 固件组件。它支持所有Dell PFS 修订版和格式&#xff0c;包括最初在 ThinOS 包中LZMA压缩、ZLIB压缩或拆分成块的格式。输出…

Vue 注册组件介绍

Vue组件的基本概念 Vue组件是一种可复用的Vue实例&#xff0c;用于封装可重用的HTML元素、JavaScript代码和CSS样式。它可以让开发者更好地组织和复用代码&#xff0c;使Web应用程序更加可维护和可扩展 Vue组件通常由三部分组成&#xff1a;模板&#xff08;template&#xf…

NLP实战:快递单信息抽取-基于ERNIE1.0 预训练模型

目录 一、介绍 二、代码 2.1前期准备 2.2加载自定义数据集 2.3数据处理 2.4数据读入 2.5PaddleNLP一键加载预训练模型 2.6设置Fine-Tune优化策略&#xff0c;模型配置 2.7模型训练与评估 ​编辑 2.8模型预测 三、总结 原文&#xff1a; 一、介绍 命名实体识别&…

网易云音乐开发--主页静态页面搭建

如何用VScode来开发小程序 wxml和wxss来高亮小程序 窗口设置 轮播图制作 就是通过swiper来设置轮播图 iconfont字体图标使用 这里要借助阿里的iconfonticonfont-阿里巴巴矢量图标库 找到自己喜欢的图标&#xff0c;添加到购物车 添加到项目 这样就可以统一的管理图标的库 …

Windows环境安装Elasticsearch和Kibana

文章目录 1 Elasticsearch1.1 下载1.2 解压并添加环境变量1.3 访问1.4 cmd命令1.5 中文分词器1.5.1 下载1.5.2 安装1.5.2.1 命令安装1.5.2.2 手动安装1.5.2.3 验证分词 1.6 使用curl批量导入 2 安装 kibana2.1 下载kibana2.2 中文界面2.3 操作索引2.3.1 增加索引2.3.1.1 单条新…

电商--订单支付中存在的问题以及思考

文章目录 前言背景订单支付大致流程订单支付流程中的注意细节防止订单重复创建为何会出现重复创建订单处理措施 掉单导致的重复支付为何会出现这种场景处理措施 已支付流水退款为何会出现这种场景 前言 最近感觉应该把自己在工作中遇到的一些比较有意思的核心流程进行总结以此…

win10远程桌面控制Ubuntu服务器 - 内网穿透实现公网远程

文章目录 前言视频教程1. ubuntu安装XRDP2.局域网测试连接3. Ubuntu安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 转载自远程穿透文章&#xff1a;Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具&#xff0c;它允许用户通过Windows…

软件测试之测试的分类(重点:黑盒测试、白盒测试、单元测试、集成测试、系统测试)

文章目录 1. 按照测试对象进行划分1&#xff09;界面测试2&#xff09;可靠性测试3&#xff09;容错性测试4&#xff09;文档测试5&#xff09;兼容性测试6&#xff09;易用性测试7&#xff09;软件安装卸载的测试8&#xff09;安全测试9&#xff09;性能测试10&#xff09;内存…

代码随想录算法训练营第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

文章目录 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV:star: 123.买卖股票的最佳时机III 至多买卖两次 分清楚动态规划所有状态至关重要&#xff0c;这是求dp数组的前提 和之前买卖股票问题解题思路相似&#xff0c;只是多增加了第二天的状态 总结&#xff1a;买卖股票…

Docker代码环境打包

1. 介绍 Docker是一种开源的容器化平台&#xff0c;它可以在操作系统级别运行应用程序。通过将应用程序及其依赖项封装成一个可移植的容器&#xff0c;Docker使得应用程序可以在任何环境中轻松部署、运行和管理。使用Docker&#xff0c;开发人员可以避免在不同环境中出现的配置…

测试从业第 3 年,我看到了终点......

先说明&#xff0c;今天的内容&#xff0c;是写给想成为高级测试开发、自动化测试专家的人看的&#xff0c;因为&#xff0c;它可能颠覆你的认知。 众所周知&#xff0c;如今无论是大厂还是中小厂&#xff0c;自动化测试基本是标配了&#xff0c;毕竟像双11、618 这种活动中庞…

vue-element-admin入门

vue-element-ui的基本使用 vue-element-admin下载vue-element-admin对接后端接口mock接口信息编写后端接口对接测试移除mock替换接口 vue-element-admin下载 这里下载的是基础模板&#xff0c;要下载完整版的可以去官网下载 # clone the project git clone https://github.co…

leetcode刷题日志4.0

目录 前言&#xff1a; 1.三个数的最大乘积 2.错误的集合 3.机器人能否返回原点 4.最长连续递增序列 5.验证回文串 II 6.交替位二进制数 前言&#xff1a; 五一假期结束了&#xff0c;大家玩的开心吗&#xff1f;不过我们还得回到我们的日常生活学习工作当中&#xff0c;…

X86架构与Arm架构的主要区别分析

​ X86架构和ARM架构是主流的两种CPU架构&#xff0c;X86架构的CPU是PC服务器行业的老大&#xff0c;ARM架构的CPU则是移动端的老大。 X86架构和arm架构实际上就是CISC与RISC之间的区别&#xff0c;很多用户不理解它们两个之间到底有哪些区别&#xff0c;实际就是它们的领域不…

《算法训练营》语言基础(゚Д゚

&#x1f442; 无论你多怪异我还是会喜欢你&#xff08;《刺客伍六七》动画推广版片尾曲&#xff09; - 周子琰 - 单曲 - 网易云音乐 一起补基础&#xff01; φ(゜▽゜*)♪ &#x1f442; My Nams Suzie - Susie/Farfashah …

20230503-win10-U盘安装WIN10-22h2

20230503-win10-U盘安装WIN10-22h2 一、软件环境 zh-cn_windows_10_consumer_editions_version_22h2_updated_april_2023_x64_dvd_80cec13e.isofirpe 1.8.2标签&#xff1a;firpe win10 22h2分栏&#xff1a;WINDOWS 二、硬件环境 8G或以上的有PE功能的启动U盘一个台式机需…

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】C题&#xff1a;泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码 相关链接 &#xff08;1&#xff09;建模方案 【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解…

String类的学习笔记(中):介绍字符串的不可变性和字符串常量池

本文介绍了String类字符串的不可变性和字符串常量池,主要包括 如何保证字符串不可变, 如何对字符串的修改. 为什么字符串要设置不可变, 字符串常量池的创建和了解,简单的字符串常量池图, 以及如何将字符串手动添加到字符串常量池 字符串不可变性和字符串常量池 一.字符串的不可…

考研数学经验分享

考研数二经验 先说一下自我情况吧&#xff0c;我是23计算机专硕考研&#xff0c;本科是河北一本双非&#xff0c;考的是数二英二和408。相对其他专业来说&#xff0c;计算机的专业课408由于要学四本书&#xff0c;所以会占用大部分时间&#xff0c;因此也会挤掉一些数学和英语的…