首页 > 试题广场 >

最小循环节

[编程题]最小循环节
  • 热度指数:3960 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 512M,其他语言1024M
  • 算法知识视频讲解
\hspace{15pt}给定一个长度为 n 、由大小写字母混合构成的字符串 s,你可以无限次的往字符串的任何地方插入任意字符。求新字符串 s最小循环节

\hspace{15pt}对于字符串 b ,找到最短长度的子串 a ,使得字符串 b 是由子串 a 拼接若干次得到的,即 b=aa \cdots a 。这里的子串 a 的长度即为字符串 b最小循环节

输入描述:
\hspace{15pt}在一行上输入一个长度不超过 10^5 、由大小写字母混合构成的字符串 s ,代表初始字符串。


输出描述:
\hspace{15pt}在一行上输出一个整数,代表字符串 s 的最小循环节的长度。
示例1

输入

abcabcD

输出

4

说明

\hspace{15pt}在字符串 \texttt{ 中,最小循环节为 \texttt{ ,其长度为 4 。
头像 佛系的青年
发表于 2025-03-15 11:41:17
主要是想通,这题的答案就是字符s去重后的长度,因为题目说的是可以无限制的添加任意字符 #include <iostream> #include <set> using namespace std; int main() { string s; cin &g 展开全文
头像 牛客研究僧
发表于 2025-03-05 15:07:56
print(len(set(input())))
头像 覃亦语
发表于 2025-03-14 16:56:14
因为可以插入任何字符,所以最小循环节为原始字符串拥有的那些字符,所以最小循环节的长度就是原有字符串去重后的长度 s = input() print(len(set(s)))
头像 1900201910072158499
发表于 2025-08-21 15:36:32
import java.util.HashSet; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] ar 展开全文
头像 凉风1
发表于 2025-07-22 20:51:15
s = input().strip() s = set(s) print(len(s)) 其实就是算不重复的字符数量
头像 说这不是bug的都很英俊
发表于 2025-07-20 20:53:12
import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static void main(String[] args) { Sc 展开全文
头像 荔枝荔枝荔枝
发表于 2025-06-02 10:29:55
/** * 需要理解题目本质: * 循环 -> 重复 -> 节点再生 * 循环意味着会有重复的元素; * 所以只要有重复的元素,就可以以这个元素为据点,往其前后填充缺省的不重复的部分,形成一个循环节; * 就 展开全文
头像 扎男_
发表于 2025-04-04 18:32:40
活动地址: 牛客春招刷题训练营 - 编程打卡活动#include <iostream>#include<set>using namespace std;int main() {    string s;    cin>>s;    set<char>s 展开全文
头像 喜欢拱白菜的香菇想开了
发表于 2025-03-03 14:27:44
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new S 展开全文
头像 我肆好银
发表于 2025-08-08 17:57:45
def func(): slist = list(input().strip()) sset = set(slist) print(len(sset)) if __name__ == "__main__": func()