如果重复,那么至少重复一次吧,字符串个数从1到len/2,均检查一遍,看是否是被重复的字符串
第一趟检查是否是第一个字符重复而形成的字符串
第二趟检查是否是前两个字符重复而形成的字符串
第三趟检查是否是前三个字符重复而形成的字符串
……

 
#include<stdbool.h>
bool repeatSubstring(char* str ) {
    int len=strlen(str);
    for(int i=1; 2*i<=len; i++){   //基准字符串的长度从1依次增加到len/2
       if(len % i == 0){  //总长对i取余为0表示有可能是重复的
          bool flag = true;     //先标记一下
          for(int j = i; j<len; j++){ //初设j=i表示第一次重复的开始处
              if(str[j] != str[j-i]){   //每次和前一个子串比较
                flag = false;  //不相等表示此次的基准字符串不是所求
                break;         //跳出此次for,
                }
            }
         if(flag == true)  //标记仍为真,意味着for正常结束,表示比较的都相同
            return true;   //说明是由重复字符串组成的
         //如果标记为false表示异常结束,此次基准字符串不是所求,那么i++
        }  
        //以上是对i取余为0的情况,如果对i取余不为0说明重复不了,那么i++
     }
     return false;  //全都比较完也没有发现合适的基准字符串,说明不是重复的
}