
算法
Huoon
这个作者很懒,什么都没留下…
展开
-
leetcode(14)最长前缀
14. 最长公共前缀这个题目是在多个字符串中寻找最长公共前缀。解体思路有点像冒泡排序的方法,将第一个字符串当成最长前缀串,和第二个字符串判断找出最长前缀串,这个最长前缀串又和第三个字符串判断,找到新的最长前缀串,以此类推,中途如果出现比较不相等的情况,如果是第一个字符不相等,则直接返回“”;否则结束比较,当前找到的前缀即为最长前缀。class Solution {public: string longestCommonPrefix(vector<string>& strs)原创 2020-10-12 23:01:58 · 259 阅读 · 0 评论 -
leetcode(13)罗马数字转整数
13. 罗马数字转整数这道题目和上一道题目是相反的转换,上一道题目中整数转罗马数字是把整数拆分成每一位,利用罗马数字表示规则从高位到低位拼接即可。那么罗马数字转整数也是一样的道理,从高位到低位(从左到右)拆分每一位整数对应的罗马字符串,然后将每一位整数相加就可以了。例如:“XXVII”代表27,那么需要把“XXVII”拆分成20和7,从左往右“XX”对应20,VII对应7,则“XXVII”对应的整数值为20 + 7,即27。通过例子可以看出来,解题思路很简单,就是识别每一位整数对应的罗马字符串,原创 2020-10-09 22:17:09 · 155 阅读 · 0 评论 -
leetcode(12)整数转罗马数字
12. 整数转罗马数字这道题是将十进制的整数转换成罗马数字表示,由于罗马字母的限制,只能转换1到3999之间的数。根据题目描述以及示例,可以发现转换原理很简单,就是将十进制对应位上的数字转换成罗马对应的字母就可以了,对应关系如下:字符数值I1V5X10L50C100D500M1000例如转换234为罗马数字,拆解每一位的值,找到对应的字符即可,234分解为:200 “CC”30 “XXX”4原创 2020-09-29 22:40:26 · 179 阅读 · 0 评论 -
leetcode(11)盛最多水的容器
题目链接:盛最多水的容器拿到这个题目,结合示意图看了下,基本上就是一个给定一组宽,高,求最大面积的题目, 同时很容易让人想到“木桶原理”,即,最短的那块板决定木桶的容量。题目给出了一个数组,里面存放所有的高度值,宽度值可以通过计算数组索引的差得到,因此任意两个值之间面积值为:const index1,index2;// 数组索引,index2 大于 index1const int height1 = heightArray[index1];const int height2 = heightArr原创 2020-09-28 09:04:02 · 179 阅读 · 0 评论 -
有穷自动机NFA和DFA的概念理解
有穷状态机(finite automata)分为不确定的有穷状态机(Nondeterministic Finate Automata,NFA)和确定的有穷状态机(Deterministic FiniteAutomata,DFA)。NFA和DFA都是有限状态机,一个是不确定的,一个是确定的,这里的确定和不确定应该这么理解呢?其实确定和不确定指的是一个状态到另一个状态的输入是否是确定的。拿NFA和DFA的状态转换图来说就是:NFA同一个符号可以标记离开同一状态的多条边,并且e也可以作为标记;DFA同一个符号原创 2020-06-03 08:56:32 · 7023 阅读 · 0 评论 -
KMP算法分析与实现
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。KMP算法的时间复杂度O(m+n)。《百度百科》在《编译原理》第二版,第三章讲到了KMP算法,该算法可以以O(m+n)的时间复杂度从一个字符串中找到一个关键字。首先看一个常规的查找子串的算法:bool findSubstring(const .原创 2020-05-14 22:21:45 · 634 阅读 · 0 评论 -
加减运算 “中缀表达式”转“后缀表达式
加减运算 “中缀表达式”转“后缀表达式”我们将a + b 或 a - b这种形式称为中缀表达式,将a b + 或 a b -称为a + b 或 a - b 所对应的后缀表达式。a + b - c 的后缀表达式为 a b + c -,转换过程如下:步骤一:(a b +) - c # 先转换 a + b => a b + 并将a b + 当成一个整体步骤二:(a b +) c - ...原创 2020-04-17 23:52:47 · 962 阅读 · 0 评论 -
Longest Palindromic Substring 算法总结
Longest Palindromic Substring 即寻找一个字符串的最长回文子串,这个问题是leetcode上面的一个题目,刚开始自己做的时候用了一个可能是效率最低的方法去实现,但是由于leetcode的代码提交时会评价代码的执行效率,因此,这种实现没能通过。仔细看一下代码的时间复杂度几乎是O(n³),所以慢是很自然的。下面是这个算法的实现:string longestPalindrome原创 2017-05-23 13:53:07 · 576 阅读 · 0 评论