校招笔试面试算法真题
weixin_42956047
这个作者很懒,什么都没留下…
展开
-
【LeetCode-297】297. 二叉树的序列化与反序列化
297. 二叉树的序列化与反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。说明: 不要使用类的成员 / 全局 / 静态变量来存储状态,你的序列化和反序列化算法应该是无状态的。先序遍历思想(较原创 2020-06-10 16:15:43 · 191 阅读 · 0 评论 -
【LeetCode-面试题】面试题 17.04. 消失的数字
面试题 17.04. 消失的数字数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?注意:本题相对书上原题稍作改动异或运算利用异或的特性,res = res ^ x ^ x。对同一个值异或两次,那么结果等于它本身// 如何找这个落单的数字呢,只要把所有的元素和索引做异或运算,// 成对儿的数字都会消为 0,只有这个落单的元素会剩下,也就达到了我们的目的。class Solution { public int missing原创 2020-06-04 03:08:19 · 460 阅读 · 0 评论 -
【LeetCode-678】678. 有效的括号字符串
678. 有效的括号字符串给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。左括号 ( 必须在对应的右括号之前 )。可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。一个空字符串也被视为有效字符串。方法一:dfs方法二:贪心方法三:双向遍历方法四:双栈参考思路/*方法四:双栈括号匹配问题的经典解法栈存放的是索引原创 2020-06-04 02:57:23 · 186 阅读 · 0 评论 -
【LeetCode-33】33. 搜索旋转排序数组
搜索旋转排序数组修改的二分查找思路参考class Solution { public int search(int[] nums, int target) { if(nums == null || nums.length == 0) { return -1; } int n = nums.length; if(n == 1) { return nums[0] == target ?原创 2020-06-03 17:22:39 · 188 阅读 · 0 评论 -
【LeetCode-5】5.最长回文子串
5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。解题思路1:双指针扩展中心法思路参考/* 寻找回文串的问题核心思想是:从中间开始向两边扩散来判断回文串。*/class Solution { public String longestPalindrome(String s) { //空间复杂度O(1) String res = ""; if(s == null ||原创 2020-06-02 21:02:05 · 96 阅读 · 0 评论 -
【LeetCode-面试题】面试题26. 树的子结构
面试题26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。解题思路:dfs注意子结构和子树的区别子树: 整个树要与原树相同, A与B相同, A的孩子与B相同子结构: 只有有部分相同即可, 当B遍历到NULL时, 即返回true/** * Definition for a binary tree node. * public class TreeNode { * int v原创 2020-06-02 15:29:48 · 119 阅读 · 0 评论 -
【LeetCode-面试题】栈排序
面试题 03.05. 栈排序栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。参考class SortedStack { private Stack<Integer> stack; public SortedStack() { this.stack = new S原创 2020-06-01 22:32:52 · 316 阅读 · 0 评论 -
【LeetCode-146】146.LRU缓存机制
LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:你是原创 2020-06-01 20:49:46 · 148 阅读 · 0 评论 -
【LeetCode-10】10. 正则表达式匹配
10. 正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。解题思路1:递归回溯递归回溯,其实就是将所有可能的情况全部都试一遍实现函数isMath(String s, String p)原创 2020-05-31 16:00:37 · 267 阅读 · 0 评论 -
【LeetCode-1143】1143.最长公共子序列
最长公共子序列LCS给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。动态规划-O(len1*len2)class So原创 2020-05-28 21:07:39 · 185 阅读 · 0 评论 -
【LeetCode-72】72.编辑距离(给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入)
编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符动态规划思路参考1思路学习2class Solution { public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.length()原创 2020-05-28 17:07:00 · 2979 阅读 · 2 评论 -
【LeetCode-402】402.移除k位数字(给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。)
移除k位数字给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。思路:单调栈(贪心+栈)class Solution { /* 单调栈的另一个应用,思想为删除靠前的较大的数能够使得最后的数值最小。 构建递增栈,若当前数字小于栈顶元素,则在满足待删减字符数不为0的情况下,栈顶元素出栈,当前数字入栈。 */ public String removeKdigits(String num, int k) { /原创 2020-05-26 20:29:45 · 2552 阅读 · 0 评论 -
【LeetCode-92】92.翻转链表II(反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。)
翻转链表II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reverseB原创 2020-05-26 19:14:58 · 265 阅读 · 0 评论 -
【并查集】并查集(Union-Find)算法框架
并查集(Union-Find)算法框架class UF { // 记录连通分量个数 private int count; // 存储若干棵树 private int[] parent; // 记录树的“重量” private int[] size; public UF(int n) { this.count = n; parent = new int[n]; size = new int[n];原创 2020-05-26 15:02:12 · 270 阅读 · 0 评论 -
【LeetCode-130】130.被包围的区域
被包围的区域题目描述给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。方法 一:dfs+递归class Solution { public void solve(cha原创 2020-05-26 14:59:23 · 300 阅读 · 0 评论 -
【LeetCode】300. 最长上升子序列:给定一个无序的整数数组,找到其中最长上升子序列的长度
【LeetCode】300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(...原创 2020-04-15 16:43:21 · 3419 阅读 · 0 评论 -
【LeetCode-518】518.零钱兑换II(动态规划)
零钱兑换II题目描述给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输出: 0解释: 只用面额2的硬币不能凑成总金额3。示例 3:输入: amount = 10, coins =原创 2020-05-23 14:31:42 · 223 阅读 · 0 评论 -
【LeetCode-322】322.零钱兑换(动态规划解决)
零钱兑换题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数量是无限的。最好理解:动态规划解决/*使用第一个测试用例步骤1.f(n)只原创 2020-05-23 13:11:52 · 559 阅读 · 0 评论 -
【剑指Offer】孩子们的游戏(圆圈中最后剩下的数)
孩子们的游戏(圆圈中最后剩下的数)题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!原创 2020-05-19 13:29:47 · 116 阅读 · 0 评论 -
【2018滴滴】寻找丑数
寻找丑数题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。输入描述:整数N输出描述:第N个丑数示例1输入6输出6参考1:暴力法(直接法)时间复杂度:O(N^2)import java.util.Scanner;/* * 查找第n个丑数 */public class Main { public static void main(St原创 2020-05-18 16:34:16 · 151 阅读 · 0 评论 -
给定一个int数组,拼接出最大值(求数组中所有数拼成的最大数)
给定一个整数,拼接出最大值(求数组中所有数拼成的最大数)public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args || args.length == 0){ return ""; } StringBuilder stringBuilder = new S转载 2020-05-15 08:58:18 · 2929 阅读 · 0 评论 -
【拼多多】Java实现大整数相乘
大整数相乘链接:https://www.nowcoder.com/questionTerminal/0f0badf5f2204a6bb968b0955a82779e来源:牛客网有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。输入描述:空格分隔的两个字符串,代表输入的两个大整数输出描述:输入的乘积,用字符串表示示例1输入72106547548473106236 982161082972751393输出708202448296345380原创 2020-05-15 01:26:39 · 199 阅读 · 0 评论 -
两个大数相加
两个大数相加https://blog.csdn.net/zangdaiyang1991/article/details/92400058原创 2020-05-15 01:14:22 · 126 阅读 · 0 评论 -
【微软】求1亿以内的所有素数 +JAVA多线程实现
public class Main { public static void main(String[] args) throws InterruptedException { int n = 100000000; long startTime = System.currentTimeMillis(); List<Integer> list = Collections.synchronizedList(new ArrayList<转载 2020-05-15 01:11:23 · 259 阅读 · 0 评论 -
【微软】Java实现相亲数
相亲数描述2500年前数学大师毕达哥拉斯就发现,220和284两数之间存在着奇妙的联系:220的因数之和(除了自身之外的因数)为:110+55+44+22+20+11+10+5+4+2+1=284,284的因数之和为:142+71+4+2+1=220。毕达哥拉斯把这样的数对称为相亲数。输入两个正整数(大于1并且在int的表示范围之内),分别计算它们所有因数之和(除了自身之外的因数),并判断它们是否是一对相亲数。【输入形式】从标准输入输入两个正整数,以一个空格分隔这两个正整数。【输出形式】以输转载 2020-05-15 00:14:00 · 1174 阅读 · 0 评论 -
【2017猿辅导】求和为0的最长连续子数组
求和为0的最长连续子数组题目描述给定一个数组,数组中元素的值只能是1或者-1,求其和为0的最长连续子序列的长度;数组为1,-1,1,-1,1,-1,1,-1,其结果为:8数组为1,1,-1,1,1,-1,-1,其结果为:6参考import java.util.HashMap;import java.util.Map;import java.util.Scanner;/** * dp[i] = arr[0] + arr[1] + ... + arr[i] * 如果 sum(arr[m原创 2020-05-14 23:19:38 · 735 阅读 · 0 评论 -
【LeetCode-面试题42】面试题42. 连续子数组的最大和
面试题42. 连续子数组的最大和题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution { public int maxSubArray(int[] nums) { if(nums == null || num原创 2020-05-14 21:47:48 · 261 阅读 · 0 评论 -
【2018爱奇艺】幸运子序列
题目描述牛牛得到一个长度为n的整数序列V,牛牛定义一段连续子序列的幸运值为这段子序列中最大值和次大值的异或值(次大值是严格的次大)。牛牛现在需要求出序列V的所有连续子序列中幸运值最大是多少。请你帮帮牛牛吧。输入描述:第一行一个整数n,即序列的长度。(2<= n <= 100000)第二行n个数,依次表示这个序列每个数值V[i], (1 ≤ V[i] ≤ 10^8)且保证V[1]到V[n]中至少存在不同的两个值.输出描述:输出一个整数,即最大的幸运值示例1输入55 2 1 4转载 2020-05-14 21:18:11 · 155 阅读 · 0 评论 -
【微软】数组里找任意两个数之和的绝对值最小值
数组里找任意两个数之和的绝对值最小值思路有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。方法1:暴力的方式。遍历所有的两个数的差,记录最小值。算法的复杂度O(n2)方法2:两个数要想差的绝对值最小,肯定是需要两个数大小相近。故有思路:先对数组进行排序,然后遍历一遍,相邻的数相减,记录绝对值最小的数。 时间复杂度:O(nlogn)方法3:用抽屉原理(也叫鸽巢原理)遍历一遍数据,找出最大值Max和最小值Min,然后把整个数据进行划分,step=(Ma原创 2020-05-14 20:38:52 · 7400 阅读 · 2 评论 -
图的m着色问题
图的m着色问题题目:题目描述给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色,请输出着色方案。输入输入第一行包含n,m,k分别代表n个结点,m条边,k种颜色,接下来m行每行有2个数u,v表示u和v之间有一条无向边,可能出现自环边,所以请忽略自环边。输出输出所有不同的着色方案,且按照字典序从小到大输出方案。样例输入 Copy3 3 31 21 32 3样例输出 Copy1 2 31 3 22 1转载 2020-05-14 19:00:37 · 430 阅读 · 0 评论 -
【剑指Offer】数组中出现次数超过一半的数字
数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。快排+遍历计数参考:https://blog.csdn.net/u013019701/article/details/80978224public class Solution {public int MoreThanHalfNum_Solution(i原创 2020-05-14 15:19:28 · 83 阅读 · 0 评论 -
【剑指Offer】字符串的排序(全排列,结果是否去重可以考虑用list还是set)
字符串的排序(全排列)题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列(全排列)。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。扩展:全排列根据题目要求看是否去重解题思路:递归+回溯思想①递归:也就是穷举,把所有情况都列举出来②回溯:在递归的过程中,回退的步骤import java.util.ArrayList;impor转载 2020-05-14 13:53:25 · 87 阅读 · 0 评论 -
【2019快手】字符串归一化
字符串归一化题目描述通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。例如:字符串"babcc"归一化后为"a1b2c2"输入描述:每个测试用例每行为一个字符串,以’\n’结尾,例如cccddecca输出描述:输出压缩后的字符串ac5d2e示例1输入dabcab输出a2b2c1d1import java.util.*;public class Main { public stat原创 2020-05-14 14:17:46 · 334 阅读 · 0 评论 -
【LeetCode】面试题37.序列化二叉树
面试题37.序列化二叉树请实现两个函数,分别用来序列化和反序列化二叉树。观察题目示例,序列化的字符串实际上是二叉树的 “层序遍历”(BFS)结果,本文也采用层序遍历。通常使用的前序、中序、后序、层序遍历记录二叉树的信息不完整,即可能对应着多种二叉树结果。题目要求的 “序列化” 和 “反序列化” 是 可逆 操作。因此,序列化的字符串应携带 “完整的” 二叉树信息,即拥有单独表示二叉树的能力。...原创 2020-04-29 00:15:27 · 259 阅读 · 0 评论 -
缓存--基于linkedHashMap实现LRU缓存淘汰策略
LRU 是 LeastRecentlyUsed 的简写,字面意思则是 最近最少使用。通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满。如常用的 Redis 就有以下几种策略:package LinkedHashMap实现LRU; import java.util.ArrayList;import java.util.Collectio...转载 2020-04-18 18:03:20 · 510 阅读 · 0 评论 -
【微众银行】博弈论:初始你只有一次抽卡机会。每次抽卡浪费一次抽卡机会,获得一张卡片。这张卡片上有两个数字,第一个数字代表你能获得的钱,第二个数字代表你能获得的额外抽卡次数。额外的抽卡次数是可以累计的。
题目描述题目描述:抽卡是一类类似于博弈的游戏。现在有一种抽卡方式,描述如下:初始你只有一次抽卡机会。每次抽卡浪费一次抽卡机会,获得一张卡片。这张卡片上有两个数字,第一个数字代表你能获得的钱,第二个数字代表你能获得的额外抽卡次数。额外的抽卡次数是可以累计的。现在,你知道了卡片的数量,所有的卡片上的数字,以及所有卡片的顺序。你只需要安排一种抽卡顺序,使得你能获得钱数最多。输入第一个行一个数...原创 2020-04-08 23:33:27 · 935 阅读 · 0 评论 -
【微众银行2020实习笔试】博弈论:Cassidy和Eleanore是一对好朋友,她们经常会一起玩游戏。某一天她们玩了一个回文游戏。游戏规则是这样的:给出一个仅包含小写字母的字符串S,在每一个人的回合
题目描述Cassidy和Eleanore是一对好朋友,她们经常会一起玩游戏。某一天她们玩了一个回文游戏。游戏规则是这样的:给出一个仅包含小写字母的字符串S,在每一个人的回合中,她们会进行两个操作:尝试重新排列这个字符串,如果可以把这个字符串排列成回文字符串,则立即获胜。否则,她们必须删掉字符串中的一个字符。已知,Cassidy先手,在两个人都采取最佳策略的情况下,谁可以获胜。...原创 2020-04-08 22:07:33 · 782 阅读 · 0 评论 -
【微众银行2020实习生笔试】有n位小朋友去小明家里拜年,小明准备了m份礼物。小明想把所有礼物平均分给每个小朋友,每个小朋友得到相同个数的礼物。但是m未必能被n整除,小明可以使用以下两种操作任意多次(
题目描述:有n位小朋友去小明家里拜年,小明准备了m份礼物。小明想把所有礼物平均分给每个小朋友,每个小朋友得到相同个数的礼物。但是m未必能被n整除,小明可以使用以下两种操作任意多次(两种操作可以同时使用)。1、 给其中一个小朋友发红包,收到红包的小朋友会离开小明家。每个红包需要花费a元。2、 购买一个新礼物,每个礼物价值为b元。问小明最少花费多少元,才能使得所有礼物可以被剩下的小朋友平分。输...原创 2020-04-08 21:49:12 · 1029 阅读 · 0 评论 -
树的不同形态(源自:小红书2019校园招聘笔试)
树的不同形态(源自:小红书校园招聘技术类在线笔试)题目描述给定二叉树T(树深度不超过H<=10,深度从1开始,节点个数N<1024,节点编号1~N)的层序和中序遍历,输出T从左向右叶子节点以及树先序和后序遍历序列输入描述:输入两行,分别代表层序和中序遍历结果,节点编号按单个空格分开输出描述:依次输出 从左向右叶子节点 ,先序, 后序 遍历 。 节点编号按空格分开示例1...原创 2020-04-07 18:20:55 · 289 阅读 · 0 评论 -
二叉树每个结点均有权值,设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离
二叉树(网易2016实习Java研发工程师编程题)题目描述有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。解法一:利用二进制编码//典型的二进制编码题,算出叶子节点二进制编码,再比编码,计算后缀长度...原创 2020-04-07 16:18:34 · 2308 阅读 · 0 评论