【题解】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; } }.jztagtree{max-height:85vh;right:0px}.jzDown{top:10vh}.jztagtree li a{background-color:#448EF6}.jztagtree li a:before{border-right:10px solid #448EF6}.jztagtree li a:hover{background:#0045a6}.jztagtree li a:hover::before{border-right:10px solid #0045a6}
$("#jztoc").toc({content: ".single", headings: "h1,h2,h3"});