Сложность: easy
Дана строка s, проверьте, может ли она быть построена путем взятия подстроки и добавления нескольких копий этой подстроки друг за другом.
Пример:
Input: heights = [2,1,5,6,2,3]
Output: 10
Explanation: The above is a histogram where width of each bar is 1.
The largest rectangle is shown in the red area, which has an area = 10 units.
👨💻 Алгоритм:
1⃣Создайте целочисленную переменную n, равную длине строки s.
2⃣Итерация по всем префиксным подстрокам длины i от 1 до n/2:
Если i делит n, объявите пустую строку pattern. Используйте внутренний цикл, который выполняется n/i раз для конкатенации подстроки, сформированной из первых i символов строки s.
Если pattern равен s, вернуть true.
3⃣Если нет подстроки, которую можно повторить для формирования s, вернуть false.
😎 Решение:
class Solution {
func repeatedSubstringPattern(_ s: String) -> Bool {
let n = s.count
for i in 1...n / 2 {
if n % i == 0 {
var pattern = ""
let substr = String(s.prefix(i))
for _ in 0..<n / i {
pattern += substr
}
if s == pattern {
return true
}
}
}
return false
}
}Ставь 👍 и забирай 📚 Базу знаний