lanqiao oj 1628 最短循环节问题

简介: lanqiao oj 1628 最短循环节问题

用户登录

#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std ; 
const int N = 1e6 +10 ;
char s[N] ;
int n ; 
int ne[N] ;
int main(){
  cin >> n ; 
  cin >> s + 1;
  int minn = 1e9 ; 
  for(int i = 2 , j = 0; i <= n ;i ++){
    while(j && s[i] != s[j+1]) j = ne[j] ;
    if(s[i] == s[j+1]){
      minn = min(minn, i - j - 1 ) ;
    }
    ne[i] = j ; 
  }
  
  cout << minn << endl ;
  return 0 ;
}
目录
相关文章
|
2月前
lanqiao OJ 1030 蓝肽子序列
lanqiao OJ 1030 蓝肽子序列
39 2
|
2月前
lanqiao OJ 803 方格取数
lanqiao OJ 803 方格取数
21 3
|
2月前
lanqiao OJ 108 发现环
lanqiao OJ 108 发现环
16 1
|
2月前
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 3513 岛屿个数(2023省赛)
16 2
|
6月前
|
存储
【洛谷 P1255】数楼梯 题解(递归+记忆化搜索+高精度)
这是一个使用动态规划解决的“数楼梯”问题。给定楼梯数`N`,求不同上楼方式的数量。程序通过递归函数`f()`计算,其中`f(x) = f(x - 1) + f(x - 2)`,初始条件`f(1) = 1`,`f(2) = 2`。考虑到数据规模可能很大,使用了高精度加法运算。样例输入`4`,输出`5`。代码中定义了一个存储中间结果的向量`mem`,并提供了一个用于显示高精度数的`printv()`函数。
106 0
|
2月前
|
人工智能 Java BI
lanqiao OJ 111 区间位移
lanqiao OJ 111 区间位移
13 0
|
7月前
代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和
代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和
69 0
|
7月前
|
人工智能 算法 Java
最长连续不重复子序列(蓝桥杯每日一题)
最长连续不重复子序列(蓝桥杯每日一题)
43 0
|
算法
代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和
代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和
61 1
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
85 0