首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
二分搜索算法的执行过程可以用一个()来描述。
[单选题]
二分搜索算法的执行过程可以用一个()来描述。
哈夫曼树
二叉判定树
堆栈
队列
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(15)
分享
纠错
1个回答
添加回答
1
coconut___
各算法核心原理拆解
字符串匹配的核心目标是:在 “主串” 中快速找到与 “模式串” 完全一致的子串。不同算法的关键差异在于 “如何比较子串与模式串”,而是否使用哈希是核心区分点。
1. 选项 A:BF 算法(暴力匹配算法)
核心逻辑
:最朴素的匹配方式,无任何优化。
从主串的第 1 个字符开始,将 “主串当前起始位置的子串” 与 “模式串” 逐字符对比;若不匹配,主串起始位置后移 1 位,重复上述过程,直到匹配或遍历结束。
是否用哈希
:否。全程通过 “逐字符比较” 判断子串与模式串是否一致,无哈希计算步骤。
2. 选项 B:BM 算法(Boyer-Moore 算法)
核心逻辑
:通过 “坏字符规则” 和 “好后缀规则”,大幅减少主串的回溯次数(主串指针通常只前进不后退),提升效率。
坏字符规则:从模式串末尾向前比较,若遇到 “不匹配的字符(坏字符)”,根据坏字符在模式串中的位置,计算主串指针需前进的步数;
好后缀规则:若已匹配部分存在 “好后缀”(即已匹配的子串在模式串其他位置也存在),则利用该规则进一步优化前进步数。
是否用哈希
:否。依赖字符位置查表(坏字符表、好后缀表)和字符直接比较,无哈希参与。
3. 选项 C:KMP 算法(Knuth-Morris-Pratt 算法)
核心逻辑
:通过预处理模式串,构建 “部分匹配表(PMT,或 next 数组)”,避免主串指针回溯,仅回溯模式串指针。
部分匹配表记录了 “模式串中每个位置的前缀与后缀的最长公共子串长度”,当匹配失败时,可通过该表快速确定模式串应回溯到的位置,减少无效比较。
是否用哈希
:否。依赖前缀后缀的公共子串分析(构建 next 数组)和字符直接比较,无哈希计算。
4. 选项 D:RK 算法(Rabin-Karp 算法)
核心逻辑
:
借助哈希算法,将 “字符串比较” 转化为 “哈希值比较”
,是典型的 “用空间换时间” 思路。
步骤如下:
计算 “模式串的哈希值”(记为hash_p);
计算 “主串中所有长度等于模式串的子串的哈希值”(利用 “滚动哈希” 优化,避免重复计算,比如将字符串视为 base 进制数,子串哈希值可由前一个子串哈希值推导得出);
对比 “子串哈希值” 与 “模式串哈希值”:若哈希值不同,直接排除;若哈希值相同,再逐字符验证(避免哈希冲突导致误判)。
是否用哈希
:是。哈希计算是该算法的核心步骤,通过哈希值快速筛选候选子串,大幅减少逐字符比较的次数。
发表于 2025-09-04 20:30:45
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
树
来自:
2025年秋招-中国移...
难度:
1条回答
15收藏
374浏览
热门推荐
相关试题
科学是什么?在中国科学院院士、清华...
语句表达
项目
人力资源类
行政管理类
市场/营销类
销售/商务类
评论
(0)
来自
2025年秋招-中国移动...
根据材料,以下说法正确的是:
资料分析
评论
(2)
来自
2025年秋招-中国移动...
小红的夹吃棋
评论
(5)
来自
2025年秋招-中国移动...
有A、B两家工厂分别建在河流的上游...
数学运算
项目
银行
财务审计类
法务类
人力资源类
行政管理类
数据
市场/营销类
销售/商务类
管理培训生
数量关系
评论
(0)
来自
2025年秋招-中国移动...
设以下变量均为int类型,表达式的...
C++
C语言
评论
(14)
来自
2025年秋招-中国移动...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题