WLS的周期串(C++)

WLS的周期串
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述

如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过1000的串输出它的最小周期。


输入

一个由常用字符组成的字符串

输出

输入字符串的最小周期

输入示例

abcabcabcabc

输出示例

3

#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
int main()
{
char word[100];
scanf("%s", word);
int len = strlen(word);
for(int i = 1; i <= len; ++i){
if (len % i == 0){
int ok = 1;
for(int j = i; j < len; ++j){
if(word[j] != word[j % i]){
ok = 0;
break;
}
}
if (ok){
printf("%d\n", i);
break;
}
}
}
//system("PAUSE");
return 0;
}

时间: 2024-10-09 11:57:29

WLS的周期串(C++)的相关文章

【周期串】NYOJ-1121 周期串

[题目链接:NYOJ-1121] 例如:abcabcabc 该字符串的长度为9,那么周期串的长度len只可能为{1,3,9},否则就不可能构成周期串. 接下来,就是要在各周期间进行比较.描述不清...自己走一遍就懂了. 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int MAXN = 202; 5 char s[MAXN]; 6 int main(){ 7 while((cin &g

周期串-java

import java.util.Scanner;/** * 周期串 * @author NEU-2015 * */public class Demo {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        String str = null;        boolean flag = true;          while (input.hasNe

[华为机试练习题]1.周期串问题

题目一[周期串问题] 如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期.例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3).字符串的长度小于等于100,由调用者保证. 接口说明 原型: int GetMinPeriod(char *inputstring); 输入参数: char * inputstring:字符串 返回值: int 字符串最小周期 代码一 /*-----------------------------------

HDU 1358 (所有前缀中的周期串) Period

题意: 给出一个字符串,在所有长度大于1的前缀中,求所有的周期至少为2的周期串,并输出一个周期的长度以及周期的次数. 分析: 有了上一题 HDU 3746 的铺垫,这道题就很容易解决了 把next求出来,然后逐个判断即可. 1 #include <cstdio> 2 #include <cstring> 3 4 const int maxn = 1000000 + 10; 5 char p[maxn]; 6 int n, next[maxn]; 7 8 void get_next(

算法竞赛入门经典 5.1.3 周期串

5.1.3  周期串 如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以为周期.例如,abcabcabcabc以3为周期(注意,它也以6和12为周期).输入一个长度不超过80的串,输出它的最小周期. 样例输入:HoHoHo 样例输出:2 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char s[100]; sca

算法篇——最小周期串

来源:<算法竞赛入门经典>例题5.1.3 题目:如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期.例如,abcabcabcabc以3为周期(注意,它也以6和12为周期).输入一个长度不超过80的串,输出它的最小周期. 样例输入:HoHoHo 样例输出:2 分析:题目中说过,字符串可能会有多个周期.但因为只需求出最小的一个,可以从小到大枚举各个周期,一旦符合条件就立即输出. 源码: #include<stdio.h> #include<string.h

uva 1328 - Period (周期串的判断 kmp)

题意:给一个长为n的字符串,问字符串的前缀是不是周期串,如果是周期串,输出前缀的最后一个字母的位置和最短周期 思路:kmp字符串匹配的性质运用. 对于前i个字符,如果f[i]不等于零,说明在此字符串的前缀中,有一部分[0,f[i]]和本字符串[i-f[i],i]的这一部分是相同的.如果这i个字符组成一个周期串,那么错开的一部分[f[i],i]恰好是一个循环节.(换句话说,如果满足f[i]不等于零 && [f[i],i]是循环节这两点,就可以说明前i个字符组成一个周期串) code: #in

E - Power Strings,求最小周期串

E - Power Strings Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2406 Description Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = &

UVA - 455(周期串)

求一段长度为k的字符串的最小重复周期(k<=80),代码: 思路: 周期串长度n必然能被k整除,在这一条件下,对周期小于k/2的,进行验证,验证k/n-1次,取最先成功的重复周期长度或k为最终结果 小技巧: 如果题目要求"两结果之间"有换行,那么对于最后一个case,可利用以下代码高亮处的方式来处理,使代码更简洁美观巧妙. #include"iostream" #include"cctype" #include"cstring&q