题目描述
敲AC Saber的时候想到了一个方便的写法
截取原串前 i 位为模板串,
使用正则在原串中匹配模板串并替换为空串,
结束后判断如果替换后的结果为空则该模板串为一个循环节;
Code
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main() {
for (string s; cin >> s, s != ".";)
for (int i = 1, len = s.size(); i <= len; ++i)
if (len % i == 0 && regex_replace(s, regex(s.substr(0, i)), "").empty()) {
cout << len / i << endl;
break;
}
return 0;
}