zoukankan      html  css  js  c++  java
  • 周期字符串[UVA-455]

    Periodic Strings  UVA - 455

    https://vjudge.net/problem/UVA-455

    书上第三章的习题3-4。题目要求判断一个给定的串的最小周期,题目保证了串的长度不大于80,因此使用朴素的暴力穷举法就可以解决。根据题意,第一个周期必然从第一个字符开始,因此只要用一个指针,从前往后扫,那么这个指针将整个串分割为两个字串,只要验证第一个字串是不是满足周期性即可。验证周期性可以依次扫描第二个字串,判断对应字符是否相等即可。我这里的对应使用了求余的方法。C++实现如下:

     1 #include<iostream>
     2 #include<cstring>
     3 int main()
     4 {
     5     using namespace std;
     6     char buf[100];
     7     bool flag;
     8     int i, k, j;
     9     cin >> k;
    10     while (k--)
    11     {
    12         cin >> buf;
    13         size_t len = strlen(buf);
    14         for (i = 0; i < len; i++)
    15         {
    16             if (len % (i + 1) != 0)
    17                 continue;
    18             for (j = i + 1; j < len; j++)
    19                 if (buf[j] != buf[j % (i + 1)]) break;
    20             if (j == len)
    21                 break;
    22         }
    23         if (k)
    24             cout << i + 1 << endl << endl;
    25         else
    26             cout << i + 1 << endl;
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    ios开发系列-准备工作
    tests
    腾讯DBA官方博客开通了,欢迎交流
    腾讯DBA官方博客开通了
    [HNOI2008]水平可见直线
    BZOJ-4518 征途
    CDQ分治与整体二分
    HYSBZ-1176 Mokia
    二逼平衡树
    可持久化数组
  • 原文地址:https://www.cnblogs.com/ggggg63/p/6715112.html
Copyright © 2011-2022 走看看