pastebin

Paste Search Dynamic
Recent pastes
get divisors
  1. def solution(s):
  2.     def get_divisors(n):
  3.         divisors = []
  4.         i = 1
  5.         while i <= n**0.5:
  6.             if n % i == 0:
  7.                 if n // i == i:
  8.                     divisors.append(i)
  9.                 else:
  10.                     divisors.extend([i, n // i])
  11.             i += 1
  12.         return divisors
  13.  
  14.     n = len(s)
  15.     divisors = get_divisors(n)
  16.     divisors.sort()
  17.  
  18.     for div in sorted(divisors, reverse=true):
  19.         valid = true
  20.         size = n // div
  21.         pattern = s[:size]
  22.         for i in range(size, n, size):
  23.             if s[i:i + size] != pattern:
  24.                 valid = false
  25.                 break
  26.         if valid:
  27.             return div
  28.  
  29.     return 1
  30.  
  31. # Test cases
  32. print solution("abcabcabcabc")  # Output: 4
  33. print solution("abccbaabccba")  # Output: 2
Parsed in 0.012 seconds