周期串 (Periodic Strings, UVa455)

来源:互联网 发布:mysql下载mac 破解版 编辑:程序博客网 时间:2024/05/21 15:38

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

样例输入:HoHoHo

样例输出:2

本题巧妙地运用了x = m % n 其中m++z 会在0~n 之内循环,运用这个小小的算法进行周期比较,非常的巧妙,看到网上都是用for 循环解题的,我就给改变了一下用while 循环做了一个。附上本人的渣代码。

#include <iostream>#include <string.h>using namespace std;int main(){    char str[100];    int i = 0, j = 0, length;    cin >> str;    length = strlen(str);    while (str[i] != '\0')    {        i++;        if (length % i == 0)        {            int ok = 1;            j = i;            while (j < length)            {                if (str[j] != str[j % i])                {                    ok = 0;                    break;                }                j++;            }            if (ok)            {                cout << "周期为:" << i << endl;                break;            }        }    }    return 0;}
0 0
原创粉丝点击