[Swift-2019力扣杯春季决赛]3. 最长重复子串

给定字符串 S,找出最长重复子串的长度。如果不存在重复子串就返回 0

示例 1:

输入:"abcd"
输出:0
解释:没有重复子串。

示例 2:

输入:"abbaba"
输出:2
解释:最长的重复子串为 "ab" 和 "ba",每个出现 2 次。

示例 3:

输入:"aabcaabdaab"
输出:3
解释:最长的重复子串为 "aab",出现 3 次。

示例 4:

输入:"aaaaa"
输出:4
解释:最长的重复子串为 "aaaa",出现 2 次。

提示:

  1. 字符串 S 仅包含从 ‘a‘ 到 ‘z‘ 的小写英文字母。
  2. 1 <= S.length <= 1500


920 ms

 1 class Solution {
 2     var lcp:[[Int]] = [[Int]](repeating:[Int](repeating:0,count:1505),count:1505)
 3     func longestRepeatingSubstring(_ S: String) -> Int {
 4         var n:Int = S.count
 5         var ans:Int = 0
 6         var arrS:[Character] = Array(S)
 7         for i in stride(from:n - 1,through:0,by:-1)
 8         {
 9             for j in (i + 1)..<n
10             {
11                 if arrS[i] == arrS[j]
12                 {
13                     lcp[i][j] = lcp[i + 1][j + 1] + 1
14                 }
15                 else
16                 {
17                     lcp[i][j] = 0
18                 }
19                 ans=max(ans,lcp[i][j])
20             }
21         }
22         return ans
23     }
24 }

原文地址:https://www.cnblogs.com/strengthen/p/10745819.html

时间: 2024-08-30 00:34:25

[Swift-2019力扣杯春季决赛]3. 最长重复子串的相关文章

[Swift-2019力扣杯春季决赛]1. 有序数组中的缺失元素

给出一个有序数组 A,数组中的每个数字都是 独一无二的,找出从数组最左边开始的第 K 个缺失数字. 示例 1: 输入:A = [4,7,9,10], K = 1 输出:5 解释: 第一个缺失数字为 5 . 示例 2: 输入:A = [4,7,9,10], K = 3 输出:8 解释: 缺失数字有 [5,6,8,...],因此第三个缺失数字为 8 . 示例 3: 输入:A = [1,2,4], K = 3 输出:6 解释: 缺失数字有 [3,5,6,7,...],因此第三个缺失数字为 6 . 提示

[Swift-2019力扣杯春季决赛]2. 按字典序排列最小的等效字符串

给出长度相同的两个字符串:A 和 B,其中 A[i] 和 B[i] 是一组等价字符.举个例子,如果 A = "abc" 且 B = "cde",那么就有 'a' == 'c', 'b' == 'd', 'c' == 'e'. 等价字符遵循任何等价关系的一般规则: 自反性:'a' == 'a' 对称性:'a' == 'b' 则必定有 'b' == 'a' 传递性:'a' == 'b' 且 'b' == 'c' 就表明 'a' == 'c' 例如,A 和 B 的等价信息

力扣(LeetCode) 14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-

LeetCode 5097. 力扣排行榜

地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一个排行榜 Leaderboard. 请你帮忙来设计这个 Leaderboard 类,使得它有如下 3 个函数: addScore(playerId, score):假如参赛者已经在排行榜上,就给他的当前得分增加 score 点分值并更新排行.假如该参赛者不在排行榜上,就把他添加到榜单上,并且将分数设

卡特兰数(Catalan number)-力扣96

卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 244662

力扣算法题—042接雨水

1 #include"000库函数.h" 2 //一点头绪都没有 3 //然后就自己按自己的意思来一遍 4 //好像没有用算法 5 //16ms,让我激动一把 6 7 class Solution { 8 public: 9 int trap(vector<int>& height) { 10 if (height.size() < 2)return 0; 11 int s = 0;//起始点 12 int e = 0;//终止点 13 int v = 0;/

力扣题目汇总(加一,旋转数组,整数反转)

力扣题目汇总(加一,旋转数组,整数反转) 加一 1.题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123. 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321. 2.解题思路 #错误思路 列表最后一位加1,判断最后

力扣题目汇总(转换成小写字母,唯一摩尔斯密码,有序数组平方)

力扣题目汇总(转换成小写字母,唯一摩尔斯密码,有序数组平方) 转换成小写字母 1.题目描述 实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" 输出: "hello" 示例 2: 输入: "here" 输出: "here" 示例 3: 输入: "LOVELY" 输出: "lovel

力扣sql题

组合两个表 表1: Person +-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address +-------------+---------+| 列名 | 类型 |+-------------+-------