Я написал это решение для проблемы LeetCode # 459. https://leetcode.com/problems/repeated-substring-pattern/ I хотите знать время выполнения и пространственную сложность этого решения. Я предполагаю сложность выполнения O (logN N), где N - длина строки. Я прав?
public boolean repeatedSubstringPattern(String s) {
if (s == null || s.isEmpty()) return true;
int l = s.length();
for (int i = l / 2; i > 0; --i) {
if (l % i == 0 && isThisSubString(s, s.substring(0, i), l / i)) {
return true;
}
}
return false;
}
private boolean isThisSubString(String s, String subString, int m) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < m; ++i) {
sb.append(subString);
}
return s.equals(sb.toString());
}
}