【题解】Power Strings
【题目描述】
给定若干个长度 ≤106 的字符串,询问每个字符串最多是由多少个相同的子字符串重复连接而成的。如:ababab 则最多有 3 个 ab 连接而成。
【输入描述】
输入若干行,每行有一个字符串,字符串仅含英语字母。特别的,字符串可能为 . 即一个半角句号,此时输入结束。
【输出描述】
若干行,每个数一行。
【样例输入】
abcd aaaa ababab .
【样例输出】
1 4 3
【参考答案】
#include <bits/stdc++.h> using namespace std; bool isRepeat(string str,int len) { bool flag = true; for(int i = len; i+len<=str.size(); i+=len) { for(int j = 0, t =i; j<len; j++,t++) { if(str[j]!=str[t]) { flag = false; break; } } if(!flag) false; } return flag; } int getM(string str) { for(int len = 1; len<str.size(); len++) { if(str.size()%len==0) { if(isRepeat(str,len)) { return str.size()/len; } } } return 1; } int main() { string word; while(cin>>word) { if(word==".")break; int res = getM(word); cout<<res<<endl; } }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。