码迷,mamicode.com
首页 > 其他好文 > 详细

周期字符串[UVA-455]

时间:2017-04-15 19:13:09      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:span   ref   题意   习题   cin   mil   blog   origin   tar   

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 }

 

周期字符串[UVA-455]

标签:span   ref   题意   习题   cin   mil   blog   origin   tar   

原文地址:http://www.cnblogs.com/ggggg63/p/6715112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!