1. 程式人生 > >習題3-4 週期串(Periodic Strings, UVa455)

習題3-4 週期串(Periodic Strings, UVa455)


如果一個字串可以由某個長度為k的字串重複多次得到,則稱該串以k為週期。例 如,abcabcabcabc以3為週期(注意,它也以6和12為週期)。

#include "OJ.h"
#include <string.h>


/*
功能:計算字串的最小週期。

*/
int GetMinPeriod(char *inputstring)
{
    /*在這裡實現功能*/
   int len = strlen(inputstring);
    for(int i = 1; i <= len; ++i)
    {
        if (len % i == 0)
        {      // 週期必然要滿足len%i==0
            int ok = 1;
            for(int j = 0; j+i< len; ++j)
            {   // 各週期間字元比較
                if(inputstring[j] != inputstring[j+i])
                {
                    ok = 0;
                    break;
                }
            }
            if (ok)
            {
                return i;
            }
        }
    }
    return 0;
}