- 博客(4)
- 收藏
- 关注
原创 剑指offer:正则表达式匹配(Java实现简易词法分析)
一、题目描述 二、解题思路 看到题目,我首先想到的就是大三编译原理课上学过的词法分析阶段。一个正则表达式可以转换成一个NFA(非确定性有限状态自动机),一个NFA通过一定的转换可以转换成与之等价的一个DFA(确定性有限状态自动机),通过DFA上的状态转换我们就可以推断出一个字符串是否是一个满足正则表达式的合法字符了。 第一步:根据所给的pattern构建出与之等价的NFA 注:由于存在a*a等...
2020-03-03 18:19:04
200
原创 剑指offer:把字符串转换成整数(Java)
一、题目描述 二、解题思路 第一步:判断给定的字符串是否是一个合法的输入 如"123"、"+123"、"-123"都属于合法输入,而"123+"、"++123"这种都属于不合法的输入。由此,我们可以利用正则表达式来判断输入的字符串是否符合要求。 String pattern = "[1-9]+[0-9]*"; String pattern1 = "[+|-][1-9]+[0-9]*"; 由于非...
2020-03-03 15:13:31
135
原创 剑指offer:数组中出现数字超过一半的数字(Java)
一、题目描述 二、解题思路 由于之前实训的时候接触过大数据的项目,所以看到题目的第一反应就是用Hadoop两大核心技术之一的MR来实现。我们将数组中的每个数字记为Map的Key值,对应的Value值为每个数字出现的次数。构建完Map后判断每个Key值对应的Value值是否大于数组长度的一半,如果大于,则输出此Key。 三、实现代码 1.初始版本 import java.util.HashMap;...
2020-02-26 20:20:27
78
原创 剑指offer :顺时针打印矩阵(Java)
一、题目描述 二、解题思路 就以题目中的4*4矩阵为例 初始情况为 我们需要先打印1, 2, 3, 4,这组因为在一行上所以比较好打印。但接下的8, 12, 16, 由于其在同一列而不在同一行上,所以打印起来并没有那么方便。那么我们就可以想办法将其转化到同一行上, 由此就想到了矩阵的转置,转置后8, 12, 16就可以在同一行上了。 记原矩阵为A,输出第一行后将其删去并进行转置,得到矩阵A1 ...
2020-02-25 21:36:55
86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人