C语言编程练习11:幂字符串

题目描述

给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。
例如:abcd=(abcd)^1,则n=1;
         aaaa=a^4,则n=4;
         ababab=(ab)^3,则n=3。

输入

输入包含多组测试数据。每组输入为一个字符串,长度不超过100,其中不包含空格等空白符。当输入为一个“.”时,输入结束。

输出

对于每组输入,输出将此字符串转化成a^n形式的最大的n。

样例输入 Copy

abcd
aaaa
ababab
.

样例输出 Copy

1
4
3
#include <iostream>
#include <cstring>
using namespace std;

int main(){
    char s[110];
    int len = 0;
    int cnt = 1;
    while(cin>>s){
        if(!strcmp(s, ".")){ //注意啊!!!不能s[0] == '.'
            break;
        }
        len = strlen(s);
        for(int i=len; i>=1; i--){
            if(len % i == 0){//说明原串是由 len/i 个子串合并的 
                int j = 0;
                for(j=i; j<len; j++){
                    if(s[j]!=s[j%i]){//匹配失败 
                        break;
                    }
                }
                if(j>=len){//完成上述循环,未出现匹配失败的情况,即匹配成功
                    cnt = len/i;
                }
            }
        }
        cout<<cnt<<endl;
    }
    return 0;
} 

 代码转自:https://blog.csdn.net/Servon_Lee/article/details/78628979

原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14314748.html